<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Normative Monitoring: Semantics and Implementation</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sergio Alvarez-Napagao</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Huib Aldewereld</string-name>
          <email>huib@cs.uu.nl</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Javier Va´zquez-Salceda</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Frank Dignum</string-name>
          <email>dignum@cs.uu.nl</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Universitat Polite`cnica de Catalunya</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Universiteit Utrecht</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>The concept of Normative Systems can be used in the scope of MultiAgent Systems to provide reliable contexts of interactions between agents where acceptable behaviour is specified in terms of norms. Literature on the topic is growing rapidly, and there is a considerable amount of theoretical frameworks for normative environments, some in the form of Electronic Institutions. Most of these approaches focus on regulative norms rather than on substantive norms, and lack a proper implementation of the ontological connection between brute events and institutional facts. In this paper we present a formalism for the monitoring of both regulative (deontic) and substantive (constitutive) norms based on Structural Operational Semantics, its reduction to Production Systems semantics and our current implementation compliant to these semantics.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>In recent years, several researchers have argued that the design of multi-agent systems
(MAS) in complex, open environments can benefit from social abstractions in order
to cope with problems in coordination, cooperation and trust among agents, problems
which are also present in human societies. One of such abstractions is Normative
Systems. Research in Normative Systems focuses on the concepts of norms and normative
environment (which some authors refer to as institutions) in order to provide normative
frameworks to restrict or guide the behaviour of (software) agents. The main idea is
that the interactions among a group of (software) agents are ruled by a set of explicit
norms expressed in a computational language representation that agents can interpret.
Although some authors only see norms as inflexible restrictions to agent behaviour,
others see norms not as a negative, constraining factor but as an aid that guides the agents’
choices and reduces the complexity of the environment, making the behaviour of other
agents more predictable.</p>
      <p>Until recently, most of the work on normative environments works with norm
specifications that are static and stable, and which will not change over time. Although this
may be good enough from the social (institutional) perspective, it is not appropriate
from the agent perspective. During their lifetime, agents may enter and leave several
interaction contexts, each with its own normative framework. Furthermore they may be
operating in contexts where more than one normative specification applies. So we need
mechanisms where normative specifications can be added to the agents’ knowledge
base at run-time and be practically used in their reasoning, both to be able to interpret
institutional facts from brute ones (by using constitutive norms to, e.g. decide if killing
a person counts as murder in the current context) and to decide what ought to be done
(by using regulative norms to, e.g. prosecute the murderer). In this paper we propose to
use production systems to build a norm monitoring mechanism that can be used both
by agents to perceive the current normative state of their environment, and for these
environments to detect norm violations and enforce sanctions. Our basic idea is that an
agent can configure, at a practical level, the production system at run-time by adding
abstract organisational specifications and sets of counts-as rules.</p>
      <p>In our approach, the detection of normative states is a passive procedure consisting
in monitoring past events and checking them against a set of active norms. This type
of reasoning is already covered by the declarative aspect of production systems, so
no additional implementation in an imperative language is needed. Using a
forwardchaining rule engine, events will automatically trigger the normative state - based on
the operational semantics - without requiring a design on how to do it.</p>
      <p>Having 1) a direct syntactic translation from norms to rules and 2) a logic
implemented in an engine consistent with the process we want to accomplish, allows us to
decouple normative state monitoring from the agent reasoning. The initial set of rules
we have defined is the same for each type of agent and each type of organisation, and
the agent will be able to transparently query the current normative state at any moment
and reason upon it. Also this decoupling helps building third party/facilitator agents
capable of observing, monitoring and reporting normative state change or even enforcing
behaviour in the organisation.</p>
      <p>In this paper we present a formalism for the monitoring of both regulative
(deontic) and substantive (constitutive) norms based on Structural Operational Semantics
(Section 2), its reduction to Production Systems semantics (Section 3) and our current
implementation compliant to these semantics (Section 4). In Section 5 we compare with
other related work and provide some conclusions.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Formal Semantics</title>
      <p>In this section we discuss the formal semantics of our framework. First, in section 2.1,
we give the semantics of institutions as the environment specifying the regulative and
constitutive norms. Then, in section 2.2, we describe the details of how this institution
evolves over time based on events, and how this impacts the monitoring process. This
formalisation will be used in section 3 as basis of our implementation.</p>
      <p>Through this paper, we will use as an example the following simplified traffic
scenario:
1. A person driving on a street is not allowed to break a traffic convention.
2. In case (1) is violated, the driver must pay a fine.
3. In a city, to exceed 50kmh counts as breaking a traffic convention.
2.1</p>
      <p>Preliminary definitions
Before giving a formal definition of institutions (see definition 4), we first define the
semantics of the regulative and constitutive norms part of that institution (in definitions
1 and 3, respectively).</p>
      <sec id="sec-2-1">
        <title>We assume the use of a predicate based propositional logic language LO with pred</title>
        <p>icates and constants taken from an ontology O, and the logical connectives {¬, ∨, ∧}.</p>
      </sec>
      <sec id="sec-2-2">
        <title>The set of all possible well-formed formulas of LO is denoted as wf f (LO) and we</title>
        <p>assume that each formula from wf f (LO) is normalised in Disjunctive Normal Form
(DNF). Formulas in wf f (LO) can be partially grounded, if they use at least one free
variable, or fully grounded if they use no free variables.</p>
        <p>In this paper we intensively use the concept of variable substitution. We define a
substitution instance Θ = {x1 ← t1, x2 ← t2, ..., xi ← ti} as the substitution of the
terms t1, t2, ..., ti for variables x1, x2, ..., xi in a formula f ∈ wf f (LO).</p>
        <p>We denote the set of roles in a normative system as the set of constants R, where</p>
      </sec>
      <sec id="sec-2-3">
        <title>R ⊂ O, and the set of participants as P , where each participant enacts at least one role</title>
        <p>according to the ontology O.</p>
        <p>
          As our aim is to build a normative monitoring mechanism that can work at real time,
special care has been made to choose a norm language which, without loss of
expresiveness, has operational semantics that can then be mapped into production systems.
Based in our previous work and experience, our definition of norm in an extension of
the norm language presented in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]:
Definition 1. A norm n is a tuple n = fA, fM , fδ, fD, fw, w , where
– fA, fM , fδ, fD, fw ∈ wf f (LO), w ∈ R,
– fA, fM , fD respectively represent the activation, maintenance, and deactivation
conditions of the norm, fδ, fw are the explicit representation of the deadline and
target of the norm, and
– w is the subject of the norm.
        </p>
        <p>In order to create an optimal norm monitor it is important to know which norms
are active at each point in time, as only those are the ones that have to be traced
(inactive norms can be discarded from the monitoring process until they become active
again). The activation condition fA specifies when a norm becomes active. It is also the
main element in the norm instantiation process: when the conditions in the activating
condition hold, the variables are instantiated, creating a new norm instance3 The
target condition fw describes the state that fulfills the norm (e.g. if one is obliged to pay,
the payment being made fulfills the obligation). The deactivating condition fD defines
when the norm becomes inactive. Typically it corresponds to the target condition (e.g.,
fulfilling the norm instance deactivates that instance of the norm), but in some cases it
also adds conditions to express other deactivating scenarios (e.g., when the norm
becomes deprecated). The maintenance condition fM defines the conditions that, when
3 One main differentiating aspect of our formalisation is that we include variables in the norm
representation and we can handle multiple instantiations of the same norm and track them
separately.
no longer hold, lead to a violation of the norm. Finally the deadline condition fδ
respresents one or several deadlines for the norm to be fulfilled.</p>
        <p>An example of a norm for the traffic scenario (”A person driving on a street is not
allowed to break a traffic convention”) would be formalised as follows
n1 := enacts(X, Driver) ∧ is driving(X),
¬traf f ic violation(X),
⊥ ,
¬is driving(X),
is driving(X) ∧ ¬traf f ic violation(X),
Driver ,</p>
        <p>The activating condition states that each time an event appears where an individual
enacting the Driver role drives (‘is driving), then a new instance of the norm becomes
active; the maintenance condition states that the norm will not be violated while no
traffic convention is violated; this norm has no deadline, it is to apply at all times an
individual is driving; the norm instance deactivates when the individual stops driving4;
the target of this norm is that we want drivers not breaking traffic conventions; finally
the subject of the norm is someone enacting the Driver role.</p>
        <p>
          It is important to note here that, although our norm representation does not explicitly
include deontic operators, the combination of the activation, deactivation and
maintenance conditions is as expressive as conditional deontic statements with deadlines as the
ones in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. It is also able to express unconditional norms and maintenance obligations
(i.e. the obligation to keep some conditions holding for a period of time). To show that
our representation can be mapped to conditional deontic representations, let us express
the semantics of the norm in definition 1 in terms of conditional deontic statements.
Given relations between the deadline and maintenance condition (that is, fδ → ¬fM ,
since the maintenance condition expresses more than the deadline alone) and between
the target and the deactivation condition (i.e., fw → fD, since the deactivation
condition specifies that either the norm is fulfilled or something special has happened), we
can formalise the norms of definition 1 as the equivalent deontic expression (using the
formalism of [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]): fA → [Ow(Ewfw ≤ ¬fM ) U fD], where Eap means that agent a
sees to it that (stit) p becomes true and U is the CTL∗ until operator. Intuitively, the
expression states that after the norm activation, the subject is obliged to see to it that the
target becomes true before the maintenance condition is negated (either the deadline is
reached or some other condition is broken) until the norm is deactivated (which is either
when the norm is fulfilled or has otherwise expired).
        </p>
        <p>Since we are not reasoning about the (effects of) combinations of norms, we will not
go into further semantical details here. The semantics presented in this deontic reduction
are enough for understanding the monitoring process that is detailed in the remainder
of the paper.</p>
        <p>A set of norms is denoted as N . We define as violation handling norms those norms
that are activated automatically by the violation of another norm:
4 Although the norm is to apply at all times an individual is driving, it is better to deactivate the
norm each time the individual stops driving, instead to keep it active, to minimize the number
of norm instances the monitor needs to keep track at all times.
Definition 2. A norm n = fA, fM , fδ, fD, fw, w is a violation handling norm of
n = fA, fM , fδ, fD, fw, w , denoted as n n iff fA ∧ ¬fM ∧ ¬fD ≡ fA</p>
        <p>Violation handling norms are special in the sense that they are only activated when
another norm is violated. They are used as sanctioning norms, if they are to be fulfilled
by the norm violating actor (e.g., the obligation to pay a fine if the driver broke a traffic
sign), or as reparation norms, if they are to be fulfilled by an institutional actor (e.g. the
obligation of the authorities to fix the broken traffic sign).</p>
        <p>A norm is defined in an abstract manner, affecting all possible participants enacting
a given role. Whenever a norm is active, we will say that there is a norm instance
ni = n, θ for a particular norm n and a substitution instance Θ.</p>
        <p>We define the state of the world st at a specific point of time t as the set of predicates
holding at that specific moment, where st ⊆ O, and we will denote S as the set of
all possible states of the world, where S = P(O). We will call expansion F (s) of a
state of the world s as the minimal subset of wf f (LO) that uses the predicates in s in
combination of the logical connectives {¬, ∨, ∧}.</p>
        <p>
          One common problem for the monitoring of normative states is the need for an
interpretation of brute events as institutional facts, also called constitution of social
reality[
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. The use of counts-as rules helps solving this problem. Counts-as rules are
multi-modal statements of the form [c](γ1 → γ2), read as “in context c, γ1 counts-as
γ2”. In this paper, we will consider a context as a set of predicates, that is, as a possible
subset of a state of the world:
Definition 3. A counts-as rule is a tuple c =
and s ⊆ O.
γ1, γ2, s , where γ1, γ2 ∈ wf f (LO),
        </p>
        <p>
          A set of counts-as rules is denoted as C. Although the definition of counts-as in [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]
assumes that both γ1 and γ2 can be any possible formula, in our work we limit γ2 to a
conjunction of predicates for practical purposes.
        </p>
        <p>Definition 4. Following the definitions above, we define an institution as a tuple of
norms, roles, participants, counts-as rules, and an ontology:</p>
        <p>I = N, R, P, C, O
An example of I for the traffic scenario would be formalised as follows:
N :={ enacts(X, Driver) ∧ is driving(X),
¬traf f ic violation(X), ⊥, ¬is driving(X),
is driving(X) ∧ ¬traf f ic violation(X), Driver ,
enacts(X, Driver) ∧ is driving(X) ∧ traf f ic violation(X),
,
paid f ine(X), Driver }
R :={Driver}, P :={P erson1}
C :={ exceeds(D, 50), traf f ic violation(D), is in city(D) }
O :={role, enacts, is driving, is in city,
exceeds, traf f ic violation, is driving, paid f ine,
P erson1, role(Driver), enacts(P erson1, Driver)}
2.2</p>
        <p>Normative Monitor
In this section we present a formalisation of normative monitoring based on Structural
Operational Semantics.</p>
        <p>From the definitions introduced in section 2.1, a Normative Monitor will be
composed of the institutional specification, including norms, the current state of the world,
and the current normative state.</p>
        <p>In order to track the normative state of an institution at any given point of time, we
will define three sets: an instantiation set IS, a fulfillment set F S, and a violation set</p>
      </sec>
      <sec id="sec-2-4">
        <title>V S, each of them containing norm instances { ni, Θj , ni , Θj , ..., ni , Θj }. We</title>
        <p>
          adapt the semantics for normative states from [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]:
Definition 5. Norm Lifecycle: Let ni = n, Θ be a norm instance, where n = fA, fM , fD, w ,
and a state of the world s with an expansion F (s). The lifecycle for norm instance ni
is defined by the following normative state predicates:
activated(ni) ⇔ ∃f ∈ F (s), Θ(fA) ≡ f
maintained(ni) ⇔ ∃Θ , ∃f ∈ F (s), Θ (fM ) ≡ f ∧ Θ ⊆ Θ
deactivated(ni) ⇔ ∃Θ , ∃f ∈ F (s), Θ (fD) ≡ f ∧ Θ ⊆ Θ
instantiated(ni) ⇔ ni ∈ IS
violated(ni) ⇔ ni ∈ V S
f ulf illed(ni) ⇔ ni ∈ F S
where IS is the instantiation set, F S is the fulfillment set, and V S is the violation
set, as defined above.
        </p>
        <p>For instance, for norm n1, the lifecycle is represented in Figure 1. The maintained
state is not represented as it holds in both the activated and fulfilled states. The
deactivated state is also not depicted because it corresponds in this case to the Fulfilled
state.
Definition 6. A Normative Monitor MI for an institution I is a tuple MI = I, S, IS, V S, F S
where</p>
        <p>The set Γ of possible configurations of a Normative Monitor MI is Γ = I × S ×
IS × V S × F S.</p>
        <p>However, the definition above does not take into account the dynamic aspects of
incoming events affecting the state of the world through time. To extend our model
we will assume that there is a continuous, sequential stream of events received by the
monitor:
Definition 7. An event e is a tuple e = α, p , where
– α ∈ P 5, and
– p ∈ F and is fully grounded.</p>
        <p>We define E as the set of all possible events, E = P(P × F )
Definition 8. The Labelled Transition System for a Normative Monitor MI is defined
by Γ, E, where
– E is the set of all possible events e = α, p
– is a transition relation such that ⊆ Γ × E × Γ</p>
        <p>The inference rules for the transition relation
are depicted in Figure 2.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Monitoring with production systems</title>
      <p>
        In our approach, practical normative reasoning is based on a production system with
an initial set of rules implementing the operational semantics described in Section 2.2.
Production systems are composed of a set of rules, a working memory, and a rule
interpreter or engine [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Rules are simple conditional statements, usually of the form
IF a THEN b, where a is usually called left-hand side (LHS) and b is usually called
right-hand side (RHS).
3.1
      </p>
      <p>
        Semantics of production systems
In this paper we use a simplified version of the semantics for production systems
introduced in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>Considering a set P of predicate symbols, and an infinite set of variables X , where
a fact is a ground term, f ∈ T (P), and WM is the working memory, a set of facts, a
production rule is denoted if p, c remove r add a, or
5 α is considered to be the asserter of the event. Although we are not going to use this element
in this paper, its use may be of importance when extending or updating this model.
(1)
(2)
(3)
(4)
(5)
(7)
i, s, is, vs, f s, e</p>
      <p>Event processed:</p>
      <p>ei = α, p
i, e i+1 i, s ∪ {p}, is, vs, f s, e</p>
      <p>i+1</p>
      <p>Counts-as rule activation:
Counts-as rule deactivation:</p>
      <p>Norm instantiation:</p>
      <p>Norm instance violation:
∃n = f A, fM , fD, w ∈ N ∧ ¬∃n</p>
      <p>N, R, P, C, O, s, is, vs, f s, e
∈ N, n n ∧ n, Θ ∈/ is ∧ ∃Θ, ∃f ∈ F (s), f ≡ Θ(fA)</p>
      <p>N, R, P, C, O, s, is ∪ {n, Θ}, vs, f s, e
∃n = f A, fM , fD, w ∈ N ∧ n, Θ ∈ is ∧ n, Θ
¬(∃Θ, ∃f ∈ F (s), f ≡ Θ(fM ) ∧ Θ ⊆ Θ ) ∧ N R =
N, R, P, C, O, s, is, vs, f s, e N, R, P, C, O, s, (is − {n, T heta
vs ∪ {n, Θ }, f s, e
∈/ vs∧
n n n , Θ</p>
      <p>}) ∪ N R,</p>
      <p>Norm instance fulfilled:</p>
      <p>p, c ⇒ r, a,
consisting of the following components:
– A set of positive or negative patterns p = p+ ∪ p− where a pattern is a term pi ∈</p>
      <sec id="sec-3-1">
        <title>T (F , X ) and a negated pattern is denoted ¬pi. p− is the set of all negated patterns</title>
        <p>and p+ is the set of the remaining patterns
– A proposition c whose set of free variables is a subset of the pattern variables:</p>
        <p>V ar(c) ⊆ V ar(p).
– A set r of terms whose instances could be intuitively considered as intended to be
removed from the working memory when the rule is fired, r = {ri}i∈Ir , where
V ar(r) ⊆ V ar(p+).
– A set a of terms whose instances could be intuitively considered as intended to
be added to the working memory when the rule is fired, a = {ai}i∈Ia , where
V ar(a) ⊆ V ar(p).</p>
        <p>Definition 9. A set of positive patterns p+ matches to a set of facts S and a substitution
σ iff ∀p ∈ p+, ∃t ∈ S, σ(p) = t. Similarly, a set of negative patterns p− dismatches a
set of facts S iff ∀¬p ∈ p−, ∀t ∈ S, ∀σ, σ(p) = t.</p>
      </sec>
      <sec id="sec-3-2">
        <title>A production rule p ⇒ r, a is (σ, WM )-fireable on a working memory WM when</title>
        <p>p+ matches with WM and p− dismatches with WM, where WM is a minimal subset
of WM, and T |= σ(c).</p>
      </sec>
      <sec id="sec-3-3">
        <title>Definition 10. The application of a (σ, WM )-fireable rule on a working memory WM leads to the new working memory WM = (WM − σ(r)) ∪ σ(a). Definition 11. A general production system PS is defined as PS = where R is a set of production rules over H = P, X .</title>
        <p>P, WM0, R ,
3.2</p>
        <p>Reduction
In order to formalise our Normative Monitor as a production system, we will need to
define several predicates to bind norms to their conditions: activation, maintenance,
deactivation, and to represent normative state over norm instances: violated, instantiated,
and fulfilled. We will also use a predicate for the arrival of events: event, and a predicate
to represent the fact that a norm instance is a violation handling norm instance of a
violated instance: repair. For the handling of the DNF clauses, we will use the predicates
holds and has clause.</p>
        <p>Definition 12. The set of predicates for our production system, for an institution I =
N, R, P, C, O , is:</p>
        <p>PI := O ∪ {activated, maintained, deactivated,
violated, instantiated, f ulf illed, event, repair,
holds, has clause, countsas}</p>
      </sec>
      <sec id="sec-3-4">
        <title>The initial working memory WM0 should include the institutional specification</title>
        <p>in the form of the formulas included in the counts-as rules and the norms in order
to represent the possible instantiations of the predicate holds, through the use of the
predicate has clause.</p>
        <p>First of all, we need to have the bindings between the norms and their formulas
available in the working memory. For each norm n = fA, fM , fD, w , these bindings
will be:</p>
        <p>WMn := {activation(n, fA), maintenance(n, fM ), deactivation(n, fD)}</p>
      </sec>
      <sec id="sec-3-5">
        <title>As we assume the formulas from wf f (LO) to be in DNF form:</title>
        <p>Definition 13. We can interpret a formula as a set of conjunctive clauses f = {f1, f2, ..., fN },
of which only one of these clauses fi holding true is necessary for f holding true as
well:
rh := has clause(f, f ) ∧ holds(f , Θ) ⇒ ∅, {holds(f, Θ)}</p>
        <p>For example, if f = (p1(x) ∧ p2(y) ∧ ... ∧ pi(z)) ∨ ... ∨ (q1(w) ∧ q2(x) ∧ ... ∧ qj (y)),
then the initial facts to be in WM0 will be:</p>
        <p>WM0 := f ∈f has clause(f, f ) = {has clause(f, f1), ..., has clause(f, f2)}
Also, we have to include the set of repair norms by the use of the predicate repair,
and the counts-as definitions by the use of the predicate countsas.</p>
        <p>Definition 14. The initial working memory WMI for an institution I =
is:</p>
        <p>WMI :=
nn∈Nn repair(n, n )</p>
        <p>N, R, P, C, O
∪
n= fA,fM ,fD,w ∈N (WMn ∪ WMfA ∪ WMfM ∪ WMfD ) ∪</p>
        <p>c= γ1,γ2,s ∈C ({countsas(γ1, γ2, s)} ∪ WMγ1 ∪ WMs)</p>
        <p>The rule for the detection of a holding formula is defined as rfhc = f ⇒ ∅, {holds(f, σ)},
where we denote as f the propositional content of a formula f ∈ wf f (LO) which
only uses predicates from O and the logical connectives ¬ and ∧, and σ as the
substitution set of the activation of the rule. Following the previous example:
rfh1c = p1(x) ∧ p2(y) ∧ ... ∧ pi(z) ⇒ ∅, {holds(f1, {x, y, z})}
rfh2c = q1(w) ∧ q2(x) ∧ ... ∧ qi(y) ⇒ ∅, {holds(f2, {w, x, y})}
Similarly as in Definition 14:</p>
        <p>n= fA,fM ,fD,w ∈N ( f∈{fA,fM ,fD} rfhc) ∪</p>
      </sec>
      <sec id="sec-3-6">
        <title>Definition 15. The set of rules RIhc for detection of holding formulas for an institution</title>
        <p>I = N, R, P, C, O is:</p>
        <p>RIhc :=
c= γ1,γ2,s ∈C ( f∈γ1 rfhc)</p>
        <p>By using the predicate holds as defined above, we can translate the inference rules
from Section 2.2. Please note that the rules are of the form p, c ⇒ r, a as shown in
Section 3.1. However, as we only need the c part to create a constraint proposition in
the rules for norm instance violation and fulfillment, c is omitted except for these two
particular cases.</p>
        <p>Definition 16. Translated rules (see Figure 2)</p>
        <p>Rule for event processing (1):
re = event(α, p) ⇒ ∅, { p }
Rule for counts-as rule activation (2):
rca = countsas(γ1, γ2, c) ∧ holds(γ1, Θ) ∧ holds(c, Θ ) ∧ ¬holds(γ2, Θ)
⇒ ∅, {Θ( γ2 )}
Rule for counts-as rule deactivation (3):
rcd = countsas(γ1, γ2, c) ∧ holds(γ1, Θ) ∧ ¬holds(c, Θ ) ∧ holds(γ2, Θ)
⇒ {Θ( γ2 )}, ∅
Rule for norm instantiation (4):
rni = activation(n, f ) ∧ holds(f, Θ) ∧ ¬instantiated(n, Θ) ∧ ¬repair(n , n)
⇒ ∅, {instantiated(n, Θ)}
Rule for norm instance violation (5):
rnv = instantiated(n, Θ)∧maintenance(n, f )∧¬holds(f, Θ )∧repair(n, n ),
∀Θ , Θ ⊆ Θ</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4 Implementation</title>
      <p>
        A prototype of our normative reasoner has been implemented as a DROOLS program.
DROOLS is an open-source Object-Oriented rule engine for declarative reasoning in
Java [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Its rule engine is an implementation of the forward chaining inference Rete
algorithm [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The use of Java objects inside the rule engine allows for portability and
an easier communication of concepts with the reasoning of agents coded in Java.
rule "event processed"
when
      </p>
      <p>Event(a : asserter, p : content)
then</p>
      <p>insertLogical(p);
end
rule "counts-as activation"
when</p>
      <p>CountsAs(g1 : gamma1, g2 : gamma2, s : context)
Holds(formula == g1, theta : substitution)
Holds(formula == s, theta2 : substitution)
not Holds(formula == g2, substitution == theta)
then</p>
      <p>Formula f;
f = g2.substitute(theta);
insert(f);
end
rule "counts-as deactivation"
when</p>
      <p>CountsAs(g1 : gamma1, g2 : gamma2, s : context)
Holds(formula == g1, theta : substitution)
not Holds(formula == s, theta2 : substitution)
Holds(formula == g2, substitution == theta)
f : Formula(content == g2, grounding == theta)
then</p>
      <p>retract(f);
end
rule "norm instance violation"
when
ni : Instantiated(n : norm, theta : substitution)
Maintenance(norm == n, f : formula)
not (SubsetEQ(theta2 : subset, superset == theta)
and Holds(formula == f, substitution == theta2))</p>
      <p>Repair(norm == n, n2 : repairNorm)
then
retract(ni);
insert(new Violated(n, theta));
insert(new Instantiated(n2, theta));
end
rule "norm instance fulfillment"
when</p>
      <p>Deactivation(n : norm, f : formula)
ni : Instantiated(norm == n, theta : substitution)
SubsetEQ(theta2 : subset, superset == theta)</p>
      <p>Holds(formula == f, substitution == theta2)
then
retract(ni);
insert(new Fulfilled(n, theta));
end
rule "norm instance violation repaired"
when
ni : Violated(n : norm, theta : substitution)
Repair(norm == n, n2 : repairNorm)</p>
      <p>Fulfilled(norm == n2, substitution == theta)
then</p>
      <p>retract(ni);
end
rule "subseteq"
when</p>
      <p>Holds(f : formula, theta : substitution)
rule "norm instantiation"
Holds(f2 : formula, theta2 : substitution)
when
eval(theta.containsAll(theta2))
Activation(n : norm, f : formula)
Holds(formula == f, theta : substitution) then
insertLogical(new SubsetEQ(theta2, theta));
not Instantiated(norm == n, substitution == theta)end
not Repair(n2 : norm, repairNorm == n)
then</p>
      <p>insert(new Instantiated(n, theta));
end</p>
      <p>
        In DROOLS we can represent facts by adding them to the knowledge base as
objects of the class Predicate. Predicates are dynamically imported from standardised
Description Logic OWL-DL ontologies into Java objects using the tool OWL2Java[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], as
subclasses of a specifically designed Predicate class. The following shows an example
of the insertion of enacts role(p, Driver) into the knowledge base to express that p
(represented as object p of the domain and instantiating a participant) is in fact enacting
the role driver:
ksession.insert(new Enacts(p, Driver.class));
      </p>
      <p>
        DROOLS programs can be initialised with a rule definition file. However, its working
memory and rule base can be modified at run-time by the Java process that is running
the rule engine. We take advantage of this by keeping a fixed base, which is a file with
fixed contents implementing the rules from Definition 13 and 16, which are
independent of the institution, and having a parser for institutional definitions that will feed the
rules from Definition 15, which are dependent on the institution (see Figure 3). The
institutional definitions we currently use are based on an extension of the XML language
presented in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>The base rules (see Definitions 13 and 16) has been quite straightforward and the
translation is almost literal. The contents of the reusable DROOLS file is shown in
Figure 4. The last rule of the Figure is the declarative implementation of the predicate</p>
      <sec id="sec-4-1">
        <title>SubsetEQ to represent the comparison of substitutions instances Θ ⊆ Θ , needed for</title>
        <p>the cases of norm instance violation and fulfillment. In our implementation in Drools,
substitution instances are implemented as Set&lt;Value&gt; objects, where Value is a tuple
String, Object .</p>
        <p>The rest of the rules (see Definitions 15) are automatically generated from the
institutional specifications and inserted into the DROOLS rule engine. An example of two
generated rules for the traffic scenario is shown in Figure 5.</p>
        <p>rule "N1_activation_1"
when
n : Norm(id == "N1")
Activation(norm == n, f : formula)
Enacts(X : p0, p1 == "Driver")</p>
        <p>IsDriving(p0 == X)
then</p>
        <p>Set&lt;Value&gt; theta = new Set&lt;Value&gt;();
theta.add(new Value("X", X));
insert(new Holds(f.getClause(0), theta));
end
rule "C1_1"
when
c : CountsAs(g1 : gamma1)</p>
        <p>Exceeds(D : p0, 50 : p1)
then</p>
        <p>Set&lt;Value&gt; theta = new Set&lt;Value&gt;();
theta.add(new Value("D", D));
insert(new Holds(g1.getClause(0), theta));
end</p>
        <p>The initial working memory is also automatically generated by inserting objects
(facts) into the DROOLS knowledge base following Definition 14. An example for the
traffic scenario is also shown in Figure 6. Please note that this is not an output of the
parser, but a representation of what it would execute at run-time.</p>
        <p>
          ksession.insert(norm1);
ksession.insert(norm2);
ksession.insert(new Repair(norm1, norm2));
ksession.insert(new Activation(norm1, fn1a));
ksession.insert(new Maintenance(norm1, fn1m));
ksession.insert(new Deactivation(norm1, fn1d));
ksession.insert(new HasClause(fn1a, fn1a1));
ksession.insert(new HasClause(fn1m, fn1m1));
ksession.insert(new HasClause(fn1d, fn1d1));
/* ...same for norm2... */
ksession.insert(new CountsAs(c1g1, c1g2, c1s));
ksession.insert(new HasClause(c1g1, c1g11));
ksession.insert(new HasClause(c1g2, c1g21));
ksession.insert(new HasClause(c1s, c1s1));
The implementation of rule-based norm operationalisation has already been explored
in previous research. Some approaches [
          <xref ref-type="bibr" rid="ref13 ref15">13,15</xref>
          ] directly define the operationalisation of
the norms as rules of a specific language, not allowing enough abstraction to define
norms at a high level to be operationalised in different rule engine specifications. [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]
introduces a translation scheme, but it is bound to Jess by using specific constructs of
this language and it does not support constitutive norms.
        </p>
        <p>
          Other recent approaches like [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] define rule-based languages with expressive
constructs to model norms, but they are bound to a proper interpreter and have no grounding
on a general production system, requiring the use of an intentionally crafted or
modified rule engine. For example, in [
          <xref ref-type="bibr" rid="ref7 ref9">7,9</xref>
          ], obligations, permissions and prohibitions are
asserted as facts by the execution of the rules, but the actual monitoring is out of the
base rule engine used.
        </p>
        <p>
          [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] introduces a language for defining an organisation in terms of roles, norms,
and sanctions. This language is presented along with an operational semantics based on
transition rules, thus making its adoption by a general production system
straightforward. Although a combination of counts-as rules and sanctions is used in this language,
it is not expressive enough to support regulative norms with conditional deontic
statements.
        </p>
        <p>
          We solve these issues by combining a normative language [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] with a reduction to
a representation with clear operational semantics based on the framework in [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] for
deontic norms and the use of counts-as rules for constitutive norms. The formalism
presented in this paper uses logic conditions that determine the state of a norm (active,
fulfilled, violated). These conditions can be expressed in propositional logic and can
be directly translated into LHS parts of rules, with no special adaptation needed. The
implementation of the operational semantics in a production system to get a practical
normative reasoner is thus straightforward. This allows agents for dynamically
changing its institutional context at any moment, by feeding the production system with a new
abstract institutional specification.
        </p>
        <p>
          Our intention is not to design a general purpose reasoner for normative agents, but
a practical reasoner for detecting event-driven normative states. This practical reasoner
can then be used as a component not only by normative agents, but also by monitors
or managers. Normative agents should deal with issues such as planning and future
possibilities, but monitors are focused on past events. For such a practical reasoner,
the expressivity of actions languages like C+ is not needed, and a simple yet efficient
solution is to use production systems, as opposed to approaches more directly related
to offline verification or model checking, such as [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ].
        </p>
        <p>
          Mere syntactical translations are usually misleading in the sense that rule language
specific constructs are commonly used, constraining reusability [
          <xref ref-type="bibr" rid="ref13 ref5 ref7">13,5,7</xref>
          ]. However, as
we have presented in this paper a reduction to a general version of production system
semantics, any rule engine could fit our purposes. There are several production system
implementations available, some widely used by the industry, such as JESS, DROOLS,
SOAR or PROVA. In most of these systems rules are syntactically and semantically
similar, so switching from one to the other would be quite simple. As production systems
dynamically compile rules to efficient structures, they can be used as well to validate
and verify the consistency of the norms. As opposed to [
          <xref ref-type="bibr" rid="ref7 ref9">7,9</xref>
          ], our reduction ensures that
the whole monitoring process is carried out entirely by a general production system,
thus effectively decoupling normative state detection and agent reasoning.
        </p>
        <p>DROOLS is an open-source powerful suite supported by JBoss, the community, and
the industry, and at the same time it is lightweight enough while including key features
that we are or will be using in future work, As an advantage over other alternatives, it
includes features relevant to our topic, e.g. event processing, workflow integration. Its
OO approach makes it easy to be integrated with imperative code (Java), and OWL-DL
native support is expected in a short time.</p>
        <p>Our implementation is already being used in several use cases with large amounts of
events and it is available at http://ict-alive.svn.sf.net/viewvc/ict-alive/
OrganisationLevel/trunk/Monitoring/ under a GPL license. As future
work we expect to extend the semantics in order to support first-order logic norm
conditions, and to perform an analysis on the algorithmic complexity of our implementation.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgements</title>
      <p>This work has been partially supported by the FP7-215890 ALIVE project. J.
Va´zquezSalceda’s work has been also partially funded by the Ramo´n y Cajal program of the
Spanish Ministry of Education and Science.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Cirstea</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kirchner</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moossen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moreau</surname>
            ,
            <given-names>P.E.</given-names>
          </string-name>
          :
          <article-title>Production Systems and Rete Algorithm Formalisation</article-title>
          .
          <source>Tech. Rep. ILOG</source>
          , INRIA Lorraine, INRIA Rocquencourt,
          <string-name>
            <surname>Manifico</surname>
          </string-name>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>King</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>An overview of production systems</article-title>
          .
          <source>Tech. rep., Stanford Artificial Intelligence Laboratory, Report No. STAN-CS-75-524</source>
          (
          <year>1975</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Dignum</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Broersen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dignum</surname>
          </string-name>
          , V., Meyer, J.J.:
          <article-title>Meeting the Deadline: Why, When and How</article-title>
          .
          <source>In: Formal Approaches to Agent-Based Systems, Lecture Notes in Computer Science 3228</source>
          , pp.
          <fpage>30</fpage>
          -
          <lpage>40</lpage>
          . Springer Berlin / Heidelberg (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Forgy</surname>
            ,
            <given-names>C.L.</given-names>
          </string-name>
          :
          <article-title>Rete: A fast algorithm for the many pattern/many object pattern match problem</article-title>
          .
          <source>Artificial Intelligence</source>
          <volume>19</volume>
          (
          <issue>1</issue>
          ),
          <fpage>17</fpage>
          -
          <lpage>37</lpage>
          (
          <year>1982</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Garc</surname>
          </string-name>
          <article-title>´ıa-</article-title>
          <string-name>
            <surname>Camino</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Noriega</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <article-title>Rodr´ıguez-</article-title>
          <string-name>
            <surname>Aguilar</surname>
            ,
            <given-names>J.A.</given-names>
          </string-name>
          :
          <article-title>Implementing norms in electronic institutions</article-title>
          .
          <source>In: Proceedings of the fourth international joint conference on Autonomous agents and multiagent systems</source>
          . pp.
          <fpage>667</fpage>
          -
          <lpage>673</lpage>
          . Utrecht,
          <string-name>
            <surname>Netherlands</surname>
          </string-name>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Garc</surname>
          </string-name>
          <article-title>´ıa-</article-title>
          <string-name>
            <surname>Camino</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <article-title>Rodr´ıguez-</article-title>
          <string-name>
            <surname>Aguilar</surname>
            ,
            <given-names>J.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sierra</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vasconcelos</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>Constraint rulebased programming of norms for electronic institutions</article-title>
          .
          <source>Autonomous Agents and MultiAgent Systems</source>
          <volume>18</volume>
          (
          <issue>1</issue>
          ),
          <fpage>186</fpage>
          -
          <lpage>217</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Governatori</surname>
          </string-name>
          , G.:
          <article-title>Representing business contracts in RuleML</article-title>
          .
          <source>International Journal of Cooperative Information Systems</source>
          <volume>14</volume>
          (
          <issue>2-3</issue>
          ),
          <fpage>181</fpage>
          -
          <lpage>216</lpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Grossi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Designing invisible handcuffs: Formal investigations in institutions and organizations for multi-agent systems</article-title>
          . Thesis, Universiteit
          <string-name>
            <surname>Utrecht</surname>
          </string-name>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Hu¨bner,
          <string-name>
            <given-names>J.F.</given-names>
            ,
            <surname>Boissier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            ,
            <surname>Bordini</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.H.</surname>
          </string-name>
          :
          <article-title>Normative programming for organisation management infrastructures</article-title>
          . In: Workshop on Coordination,
          <article-title>Organization, Institutions and Norms in Agent Systems in Online Communities (COIN@MALLOW</article-title>
          <year>2009</year>
          )
          <article-title>(</article-title>
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kyas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Prisacariu</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Run-time monitoring of electronic contracts</article-title>
          .
          <source>In: Proceedings of 6th International Symposium on Automated Technology for Verification and Analysis, Lecture Notes in Computer Science 5311</source>
          , pp.
          <fpage>397</fpage>
          -
          <lpage>407</lpage>
          . Springer Berlin / Heidelberg (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Oren</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Panagiotidi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <article-title>Va´zquez-</article-title>
          <string-name>
            <surname>Salceda</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Modgil</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Luck</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miles</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Towards a formalisation of electronic contracting environments</article-title>
          . In: Coordination, Organizations,
          <source>Institutions and Norms in Agent Systems IV, Lecture Notes in Computer Science 5428</source>
          , pp.
          <fpage>156</fpage>
          -
          <lpage>171</lpage>
          . Springer Berlin / Heidelberg (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Panagiotidi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <article-title>Va´zquez-</article-title>
          <string-name>
            <surname>Salceda</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alvarez-Napagao</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ortega-Martorell</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Willmott</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Confalonieri</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Storms</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Intelligent Contracting Agents Language</article-title>
          .
          <source>In: Proceedings of the Symposium on Behaviour Regulation in Multi-Agent Systems (BRMAS</source>
          <year>2008</year>
          )
          <article-title>at AISB 2008</article-title>
          . vol.
          <volume>1</volume>
          , p.
          <fpage>49</fpage>
          .
          <string-name>
            <surname>Aberdeen</surname>
          </string-name>
          , Scotland (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Paschke</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dietrich</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuhla</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>A Logic Based SLA Management Framework</article-title>
          .
          <source>In: Proceedings of the 4th Semantic Web Conference (ISWC</source>
          <year>2005</year>
          ). pp.
          <fpage>68</fpage>
          -
          <lpage>83</lpage>
          . Galway,
          <string-name>
            <surname>Ireland</surname>
          </string-name>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Proctor</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neale</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frandsen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jr.</surname>
            ,
            <given-names>S.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tirelli</surname>
          </string-name>
          , E., Meyer, F.,
          <string-name>
            <surname>Verlaenen</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Drools documentation</article-title>
          .
          <source>JBoss</source>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Strano</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Molina-Jimenez</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shrivastava</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>A rule-based notation to specify executable electronic contracts</article-title>
          .
          <source>In: Proceedings of the International Symposium on Rule Representation, Interchange and Reasoning on the Web (RuleML2008), Lecture Notes in Computer Science 5321</source>
          , pp.
          <fpage>81</fpage>
          -
          <lpage>88</lpage>
          . Springer Berlin / Heidelberg (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Tinnemeier</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dastani</surname>
          </string-name>
          , M., Meyer, J.J.:
          <article-title>Roles and norms for programming agent organizations</article-title>
          .
          <source>In: Proc. of 8th Int. Conf. on Autonomous Agents and Multiagent Systems (AAMAS</source>
          <year>2009</year>
          ). vol.
          <volume>1</volume>
          , pp.
          <fpage>121</fpage>
          -
          <lpage>128</lpage>
          . Budapest, Hungary (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Zimmermann</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>OWL2Java (</article-title>
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>