<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Built-ins for JSON Rules</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author role="corresp">
							<persName><forename type="first">Emilian</forename><surname>Pascalau</surname></persName>
							<email>emilian.pascalau@hpi.uni-potsdam.de</email>
							<affiliation key="aff0">
								<orgName type="institution">Hasso Plattner Institute</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Built-ins for JSON Rules</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">0213FC898BC66321EF673BED455E89B2</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T02:25+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>JSON Rules is a declarative rule language for the World Wide Web. It has been created to satisfy at least the following list of requirements: (1) create and execute rules in browser; (2) support for ECA and PR rules; (3) the Working Memory contains event-facts. Here we extend the language with the concept of built-ins (predicates and actions). We focus on the relation with RIF-DTB, however with a strong emphasis on the environment where the rules are going to be executed: the web browser. As such we introduce here an initial set of built-ins, as well as the architectural aspects that should be taken into consideration for an engine implementing the JSON Rules language.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>There is a multitude of rule languages out there (i.e. Drools <ref type="bibr" target="#b0">[1]</ref>, F-Logic <ref type="bibr" target="#b1">[2]</ref>) each of them with their specificities. However interoperability in a world that moves at high speeds and where business are interconnected is a must. RIF is the W3C Rule Interchange Format<ref type="foot" target="#foot_0">1</ref> and also the name of the W3C group that it is in charge of this standard. Although the main goal of RIF is to provide a rule interchange language, it is more than that. RIF provides different versions, called dialects in order to tackle the serious trade-offs in nowadays rule languages. Almost a mandatory request for any rule language it is to provide at least the guidelines for translating to and from RIF.</p><p>JSON Rules introduced initially in <ref type="bibr" target="#b2">[3]</ref> and later extended in <ref type="bibr" target="#b3">[4]</ref> is a rule language designed to be run in a web browser and to model web based scenarios. The main goals of the language are: to move the reasoning process to the clientside; to offer support for intelligent user interfaces; to handle business workflows; to allow rule-based reasoning with semantic data inside HTML pages (reasoning with RDFa <ref type="bibr" target="#b4">[5]</ref>); to create intelligent mashups -rule based mashups; to enable users to collaborate and share information on the WWW (rule sharing and interchange). JSON Rules fulfills the following requirements: rules run in the browser; uses Event-Condition-Action rules; rules are defined on top of DOM structure; uses DOM events plus user defined events; actions are defined by users and can be any JavaScript function calls. JSON Rules language uses a special type of Working Memory (WM) -the Document Object Model (DOM) <ref type="bibr" target="#b5">[6]</ref> of the page. As in any forward chaining engine, the main effect of JSON rules execution is the update of the WM i.e. the DOM of the page. Therefore, the language design is tailored to the environment where rules are going to be executed.</p><p>With respect to its condition language, JSON Rules was influenced in its syntax by other rule languages such as Drools <ref type="bibr" target="#b0">[1]</ref>. Any valid JavaScript function call is allowed as actions. This covers also the OMG Production Rule Representation ( <ref type="bibr" target="#b6">[7]</ref>) and RIF Production Rule Dialect <ref type="bibr" target="#b7">[8]</ref>.</p><p>Any JSON Rule is identified by an id. A rule may have a priority -if this attribute is missing then its implicit value is 1. The rule engine executes the rules in a down counting order (from greater priority to lower priority). However, the execution order for rules with the same priority is irrelevant. One significant property of a JSON Rule is the appliesTo property. This property stores an array of URLs to which this rule refers to i.e. a list of URLs defining the context in which this rule can be applied. Based on this property, rules are grouped in rule sets.</p><p>An EventExpression is an expression capturing any DOM Event <ref type="bibr" target="#b8">[9]</ref>. Therefore, it has a type, target, timeStamp and phase properties, each of them allowing a JSONTerm as a value. Inside the rule engine, EventExpression is matched with DOM Events at their occurrence (we allow only atomic events with no duration i.e. the events are consumed immediately when they occur) time. Consuming events yields into event-facts creation in the WM and such facts are immediately consumed. The engine itself is event-based i.e. all internal processes and activities are event-driven. This is imposed by the environment where the engine runs -the Web browser. Generally, the engine consumes events, through its Working Memory, check conditions and execute actions.</p><p>A JSON Rule may contain a list of conditions, logically interpreted as a conjunction of atoms. The language provides the following types of atoms: Description, JavaScriptBooleanExpression, XPathCondition, NodeEquality and Negation. The Description conditional is similar to Drools <ref type="bibr" target="#b0">[1]</ref> pattern. With such conditional property restrictions can be defined as well as property bindings, in a Drools like fashion. JavaScriptBooleanCondition stands for JavaScript boolean expression; any JavaScript boolean expression can be used. The XPathCondition is used to test that a DOM Node is found in the list of nodes returned by evaluating an XPath expression. The last two NodeEquality and Negation are pretty much obvious. They are used to test equality between two terms, respectively to negate a conditional atom.</p><p>As usual, a rule has associated a list of actions that have to be performed, if the rule conditions hold. An action is a call to any available JavaScript function. Actions are executed sequentially. The reader may notice that such kind of actions can determine also side effects i.e. more than simple updates on the Working Memory (communication with a server that has no effect on the WM).</p><p>As stated above since it is almost mandatory for any rule language to provide means of translation to and from RIF this paper makes the first steps towards translation from RIF to JSON Rules and vice versa by tackling the problem of built-ins.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Built-ins</head><p>This section deals with built-ins for the JSON Rules language, along with the architectural and technical aspects imposed by the context (web browsers) and the programming language (JavaScript, ECMAScript <ref type="bibr" target="#b9">[10]</ref>) in which the JSON Rules <ref type="bibr" target="#b2">[3]</ref> engine is running and has been implemented.</p><p>Built-in means constructed as a non-detachable part of a larger structure. In case of rule systems built-ins encapsulate commonly used functionality, provided as predicates or functions. Built-ins also help in maintaining the clean declarative design of rules.</p><p>As described in the Conclusion of RIF-UCR <ref type="bibr" target="#b10">[11]</ref> "the goal of the RIF working group is to provide representational interchange formats for processes based on the use of rules and rule-based systems. These formats act as "interlingua" to interchange rules and integrate with other languages, in particular (Semantic) Web mark-up languages."</p><p>JSON Rules foresees compliance with Rule Interchange Format (RIF) <ref type="foot" target="#foot_1">2</ref> . As such the JSON Rules aims to provide the built-ins defined in RIF-DTB <ref type="bibr" target="#b11">[12]</ref>, beside others that refer to the mashup context.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">RIF built-ins short intro</head><p>RIF-DTB <ref type="bibr" target="#b11">[12]</ref> is the reference document concerning built-in datatypes, predicates, functions supposed to be supported by RIF dialects such as: RIF Core Dialect <ref type="bibr" target="#b12">[13]</ref>, RIF Basic Logic Dialect <ref type="bibr" target="#b13">[14]</ref> and RIF Production Rules Dialect <ref type="bibr" target="#b7">[8]</ref>. According to RIF-DTB document each dialect takes use of a superset or a subset of datatypes, predicates or functions defined in RIF-DTB. The datatypes taken into account by the RIF-DTB <ref type="bibr" target="#b11">[12]</ref> are imported either from W3C XML Schema Definition Language (XSD) <ref type="bibr" target="#b14">[15]</ref> or from rdf:PlainLiteral: A Datatype for RDF Plain Literals <ref type="bibr" target="#b15">[16]</ref>. Predicates or functions have been ported from XQuery 1.0 and XPath 2.0 Functions and Operators <ref type="bibr" target="#b16">[17]</ref> or from rdf:PlainLiteral: A Datatype for RDF Plain Literals <ref type="bibr" target="#b15">[16]</ref>.</p><p>The list of predicates and function built-ins taken into consideration by RIF-DTB comprises among others: predicates for literal comparison, numeric functions and predicates, function and predicates on boolean values, on string, on date/time and duration, on XMLLiterals, on rdf:PlainLiteral.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">JSON Rules context prerequisites</head><p>The general technical guide line that governs the architectural aspects and any other aspects is the compliance and conformity with the ECMAScript standard <ref type="bibr" target="#b9">[10]</ref>.</p><p>Beside the built-ins (predicates and functions) classification introduced in RIF-DTB <ref type="bibr" target="#b11">[12]</ref> that span all the RIF dialects, we introduce here a set of built-in actions that serve a different purpose, mainly actions needed in dealing with mashups. As introduced in <ref type="bibr" target="#b3">[4]</ref> one of the main purposes of JSON Rules is to be an execution language for mashups.</p><p>Although we are not going to address here the problem of translating RIF constants' names, symbols, or namespaces, minimal introduction of ECMAScript concepts are necessary.</p><p>One of the most important concept is the closure concept. The ECMAScript <ref type="bibr" target="#b9">[10]</ref> standard explains a closure as a "function with some arguments already bound to values". Others define a closure <ref type="foot" target="#foot_2">3</ref> as "an expression (typically a function) that can have free variables together with an environment that binds those variables (that "closes" the expression)".</p><p>As stated in <ref type="bibr" target="#b17">[18]</ref> "JavaScript's extreme dynamism equips it with tremendous flexibility, and one of the most interesting yet least understood facets of its dynamism involves context".</p><p>On top of these two concepts (closure, context) the concept of namespace is defined. We understand by the notion of namespace hierarchies of nested objects as defined also in <ref type="bibr" target="#b17">[18]</ref>.</p><p>Another characteristic of JavaScript is that it is weakly typed.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3">Guidelines for defining JSON Rules built-ins</head><p>There are a couple of general guidelines that should be taken into account when defining functions and predicates, either user defined or built-in:(1) in order to avoid name clashing in JavaScript global context it is recommended to use proper namespaces;</p><p>(2) predicates should always return a default value, undefined value should be avoided.</p><p>To simplify the process of creating namespaces JavaScript libraries such as Dojo<ref type="foot" target="#foot_3">4</ref> could be used.</p><p>Because the function word is reserved in JavaScript its usage should be avoided in a different context other than defining a JavaScript function.</p><p>Another important issue that must be taken into account is that the JavaScript code for a page runs in a common context, and as such any redefinition of the same object will override the initial implementation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.4">From RIF-DTB to JSON Rules built-ins</head><p>This section explains how RIF built-in datatypes, predicates and functions are translated into JSON Rules, respectively JavaScript.</p><p>In order to preserve the semantics type mapping is necessary. Table <ref type="table" target="#tab_0">1</ref> defines the mapping between RIF built-in datatypes and JavaScript datatypes. E4X <ref type="bibr" target="#b18">[19]</ref> datatype is also taken into account. Since JavaScript is weakly typed in most of the cases a custom type must be built. In Table <ref type="table" target="#tab_0">1</ref> this is emphasized by the cust. type notation. The same table specifies for each custom type, the base JavaScript type or types on which the custom type must be based. As previously stated datatypes as well as functions and predicates must be grouped by means of proper namespaces. In the RIF-DTB case datatypes are identified by the following namespace: http://www.w3.org/2001/XMLSchema#. As convention this gets translated into org.w3c.xs. For example the xs:duration datatype is identified with: http://www.w3.org/2001/XMLSchema#duration. This one gets translated into org.w3c.xs.Duration. The namespace for RDF datatypes is org.w3c.rdf.</p><p>In a similar way the namespaces for the RIF predicates and functions are: org.w3c.rif.pred and respectively org.w3c.rif.func.</p><p>The implementation for custom datatypes is inspired from J2EE implementation (i.e. javax.xml.datatype.Duration). The Duration custom type provides the following list of methods: add(org.w3c.xs.Duration rhs); addTo(Date date); compare(org.w3c.xs.Duration duration); getDays(); getHours(); getMinutes(); getMonths(); getSeconds(); getSign(); getYears(); isLongerThan(org.w3c.xs.Duration duration); isShorterThan(org.w3c.xs.Duration duration); negate().</p><p>In the RIF-DTB context built-in predicates and functions are defined with the following artifacts: (1) name of the built-in; (2) external schema of the builtin (the signature of the built-in); (3) for a RIF built-in function -how it maps its arguments into a result -in RIF terms this means the mapping of I external (σ) in the formal semantics of <ref type="bibr" target="#b19">[20]</ref> and <ref type="bibr" target="#b13">[14]</ref>; (4) for a RIF built-in predicate -how it gives the truth value when arguments are substituted with values from the domain -this corresponds to the mapping I truth • I external (σ) in the formal semantics of <ref type="bibr" target="#b19">[20]</ref> and <ref type="bibr" target="#b13">[14]</ref>; <ref type="bibr" target="#b4">(5)</ref> the domains for the built-ins' arguments.</p><p>RIF-DTB explains that "typically, built-in functions and predicates are defined over the value spaces of appropriate datatypes, i.e. the domains of the arguments. When an argument falls outside of its domain, it is understood as an error."</p><p>In RIF-DTB the predicate evaluating greater than is defined as follows:</p><p>name pred:numeric-greater-than schema (?arg 1 ?arg 2 ; pred : numeric − greater − than(?arg 1 ?arg 2 )) domains xs:integer, xs:double, xs:float, or xs:decimal for both arguments mapping When both a 1 and a 2 belong to their domains I truth •I external (?arg 1 ?arg 2 ; pred : numeric−greater−than(?arg 1 ?arg 2 ))(a 1 a 2 ) = t if and only if op : numeric − greater − than(a 1 , a 2 ) returns true, as defined in <ref type="bibr" target="#b16">[17]</ref>, f otherwise. Also RIF-DTB specifies that "if an argument value is outside of its domain, the truth value of the function is left unspecified."</p><p>The numeric-greater-than predicate could be implemented in JSON Rules as depicted in Example 1.</p><p>Since the hyphen based notation used by RIF in the predicates and function names can not be used in JavaScript the camel hump notation should be used instead. As such the name numeric-greater-than gets translated into numericGreaterThan.</p><p>The mapping of the signature is obvious, with respect to the list of arguments. With respect to RIF note that if the type of any of the arguments is outside of the specified domain then no result should be given. This situation can be dealt at least in three ways: (1) the value returned could be the JavaScript special value undefined; (2) JavaScript isNaN() function could be used and in case of true the Number.NaN should be returned; (3) an exception could be raised.</p><p>However since the RIF specification states that this predicate should behave as defined in <ref type="bibr" target="#b16">[17]</ref>, in case of a NaN value, false is returned. As such this approach can not be used here. In other cases any of the three approaches could be used. This approach could be used in general to map all RIF built-in predicates and functions.</p><p>In addition the approach could be used to define libraries of actions oriented towards usage of well known services such Twitter<ref type="foot" target="#foot_4">5</ref> , Facebook<ref type="foot" target="#foot_5">6</ref> , Youtube<ref type="foot" target="#foot_6">7</ref> and so forth through their APIs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.5">JSON Rules built-ins for mashups</head><p>In mashups case there could be identified a set of operations that happen regularly, such as loading of services, memory cleaning etc. These type of functionality is provided under the org.jsonrules.builtin.mashups.system namespace. Functionality such as load or memoryCleanUp is provided as built-in functions the named namespace.</p><p>The existence of services is a prerequisite for the mashups, and as such they have to be available for the mashup, when this is instantiated.</p><p>Recall that we have in mind mashups modeled with JSON Rules that run in the browser <ref type="bibr" target="#b3">[4]</ref>. All the involved services interact with each other in a common context which is the choreographer page. The choreographer is accessible to the user through a web browser. However firstly they need to be made available to the choreographer. The browser loads the content of the choreographer and a DOM Basic Event load it is raised. These functions should be used in general in relation with a load event, because its main purpose is to make available for the choreographer the necessary services.</p><p>The term services here has a broader understanding and comprises at least the following: web page, RPC service, AJAX object.</p><p>The signature of org.jsonrules.builtins.mashups.load function is: org.jsonrules.builtins.mashups.load($what,$where). In RIF-DTB terminology the signature of a function is the schema of a function.</p><p>The $what argument refers to what needs to be loaded. this could be an URI (Uniform Resource Identifier) or it could be a reference to an AJAX object.</p><p>$where argument refers to the place where the service or the response of an AJAX request will be stored. This could be for example an iframe, a div, both of them identified by an id, a reference to a JavaScript object.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Conclusions</head></div><figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 .</head><label>1</label><figDesc>Mapping of RIF built-in Datatypes to JavaScript Datatypes</figDesc><table><row><cell>RIF datatype</cell><cell>JavaScript</cell><cell>RIF datatype</cell><cell>JavaScript</cell></row><row><cell></cell><cell>datatype</cell><cell></cell><cell>datatype</cell></row><row><cell>xs:string</cell><cell>String</cell><cell cols="2">xs:nonNegativeInteger Number, cust. type</cell></row><row><cell>xs:normalizedString</cell><cell>String, cust. type</cell><cell>xs:unsignedLong</cell><cell>Number, cust. type</cell></row><row><cell>xs:token</cell><cell>String, cust. type</cell><cell>xs:unsignedInt</cell><cell>Number, cust. type</cell></row><row><cell>xs:language</cell><cell>String, cust. type</cell><cell>xs:unsignedShort</cell><cell>Number, cust. type</cell></row><row><cell>xs:Name</cell><cell>String, cust. type</cell><cell>xs:unsignedByte</cell><cell>Number, cust. type</cell></row><row><cell>xs:NCName</cell><cell>String, cust. type</cell><cell>xs:positiveInteger</cell><cell>Number, cust. type</cell></row><row><cell>xs:ID</cell><cell>String, cust. type</cell><cell>xs:decimal</cell><cell>Number, cust. type</cell></row><row><cell>xs:IDREF</cell><cell>String, cust. type</cell><cell>xs:boolean</cell><cell>Boolean</cell></row><row><cell>xs:NMTOKEN</cell><cell>String, cust. type</cell><cell>xs:dateTime</cell><cell>Date</cell></row><row><cell>xs:ENTITY</cell><cell>String, cust. type</cell><cell>xs:date</cell><cell>Date, cust. type</cell></row><row><cell>xs:NOTATION</cell><cell>String, cust. type</cell><cell>xs:time</cell><cell>Date, cust. type</cell></row><row><cell>xs:anyURI</cell><cell>String, cust. type</cell><cell>xs:gYearMonth</cell><cell>Date, cust. type</cell></row><row><cell>xs:hexBinary</cell><cell>Array, cust. type</cell><cell>xs:gMonthDay</cell><cell>Date, cust. type</cell></row><row><cell>xs:base64Binary</cell><cell>Array, cust. type</cell><cell>xs:gYear</cell><cell>Date, cust. type</cell></row><row><cell>xs:float</cell><cell cols="2">Number, cust. type xs:gDay</cell><cell>Date, cust. type</cell></row><row><cell>xs:double</cell><cell>Number</cell><cell>xs:gMonth</cell><cell>Date, cust. type</cell></row><row><cell>xs:duration</cell><cell>String+Date, cust.</cell><cell>xs:NMTOKENS</cell><cell>String+Array, cust.</cell></row><row><cell></cell><cell>type</cell><cell></cell><cell>type</cell></row><row><cell>xs:integer</cell><cell cols="2">Number, cust. type xs:IDREFS</cell><cell>String+Array, cust.</cell></row><row><cell></cell><cell></cell><cell></cell><cell>type</cell></row><row><cell cols="3">xs:nonPositiveInteger Number, cust. type xs:ENTITIES</cell><cell>String+Array, cust.</cell></row><row><cell></cell><cell></cell><cell></cell><cell>type</cell></row><row><cell>xs:negativeInteger</cell><cell cols="2">Number, cust. type xs:QName</cell><cell>String, cust. type</cell></row><row><cell>xs:long</cell><cell cols="2">Number, cust. type xs:anyType</cell><cell>E4X XML object</cell></row><row><cell>xs:int</cell><cell cols="2">Number, cust. type rdf:PlainLiteral</cell><cell>String</cell></row><row><cell>xs:short</cell><cell cols="2">Number, cust. type rdf:XMLLiteral</cell><cell>E4X XML object</cell></row><row><cell>xs:byte</cell><cell>Number, cust. type</cell><cell></cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head></head><label></label><figDesc>Based on Table 1 xs:integer, xs:double, xs:float, or xs:decimal RIF-DTB datatypes are translated into custom types but based on the JavaScript number datatype.</figDesc><table /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">http://www.w3.org/2005/rules/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">http://www.w3.org/2005/rules/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_2">http://www.jibbering.com/faq/faq_notes/closures.html</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_3">http://www.dojotoolkit.org/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_4">http://twitter.com/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_5">http://www.facebook.com/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="7" xml:id="foot_6">http://www.youtube.com/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" xml:id="foot_7">This paper touched the problem of built-ins for JSON Rules in relation with RIF. This is a step towards translation JSON Rules to and from RIF. RIF builtin datatypes, predicates and functions have been taken into consideration, as well as other type of built-ins that in principal are useful in the mashups context. To maintain similar behavior functionality grouped, namespaces have been suggested for RIF-DTB and mashups environments. Beside all these technical aspects necessary for built-ins definition in the context of JSON Rules has been taken into account.</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Drools 4</title>
		<author>
			<persName><forename type="first">M</forename><surname>Proctor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Neale</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Frandsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">G</forename><surname>Jr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Tirelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Meyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Verlaenen</surname></persName>
		</author>
		<ptr target="http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html" />
		<imprint>
			<date type="published" when="2008-05">May 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Logical foundations of object-oriented and framebased languages</title>
		<author>
			<persName><forename type="first">M</forename><surname>Kifer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Lausen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Wu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of the ACM</title>
		<imprint>
			<biblScope unit="volume">42</biblScope>
			<biblScope unit="page" from="741" to="843" />
			<date type="published" when="1995">1995</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">JSON Rules</title>
		<author>
			<persName><forename type="first">A</forename><surname>Giurca</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Pascalau</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Proceedings of 4th Knowledge Engineering and Software Engineering</title>
				<meeting>the 4th Knowledge Engineering and Software Engineering<address><addrLine>KESE</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2008">2008. 2008</date>
			<biblScope unit="volume">425</biblScope>
			<biblScope unit="page" from="7" to="18" />
		</imprint>
	</monogr>
	<note>CEUR Workshop Proceedings</note>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">A Rule-Based Approach of Creating and Executing Mashups</title>
		<author>
			<persName><forename type="first">E</forename><surname>Pascalau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Giurca</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 9th IFIP Conference on e-Business, e-Services, and e-Society (I3E</title>
				<meeting>the 9th IFIP Conference on e-Business, e-Services, and e-Society (I3E</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2009">2009. 2009</date>
			<biblScope unit="page" from="82" to="95" />
		</imprint>
	</monogr>
	<note>forthcoming</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">RDFa Primer Bridging the Human and Data Webs</title>
		<author>
			<persName><forename type="first">B</forename><surname>Adida</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Birbeck</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/xhtml-rdfa-primer/" />
	</analytic>
	<monogr>
		<title level="m">W3C Working Draft</title>
				<imprint>
			<date type="published" when="2008-10">October 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Document Object Model (DOM) Level 3 Core Specification</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">L</forename><surname>Hors</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">L</forename><surname>Hegaret</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Wood</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Nicol</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Robie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Champion</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Byrne</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/DOM-Level-3-Core/" />
	</analytic>
	<monogr>
		<title level="m">W3C Recommendation</title>
				<imprint>
			<date type="published" when="2004-04">April 2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m">OMG: Production Rule Representation (PRR), Beta 1</title>
				<meeting><address><addrLine>OMG</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2007-11">November 2007</date>
		</imprint>
	</monogr>
	<note type="report_type">Technical report</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">RIF Production Rule Dialect</title>
		<author>
			<persName><forename type="first">C</forename><surname>De Sainte Marie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Paschke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Hallmark</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/rif-prd/" />
	</analytic>
	<monogr>
		<title level="m">W3C Working Draft</title>
				<imprint>
			<date type="published" when="2009-07">July 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Document Object Model (DOM) Level 3 Events</title>
		<author>
			<persName><forename type="first">B</forename><surname>Hohrmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">L</forename><surname>Hegaret</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Pixley</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007-12">December 2007</date>
			<pubPlace>W3C</pubPlace>
		</imprint>
	</monogr>
	<note type="report_type">Technical report</note>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<ptr target="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf" />
		<title level="m">ECMA: ECMAScript Language Specification</title>
				<imprint>
			<date type="published" when="1999-12">December 1999</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">RIF Use Cases and Requirements</title>
		<author>
			<persName><forename type="first">A</forename><surname>Paschke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Hirtle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ginsberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">L</forename><surname>Patranjan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Mccabe</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/rif-ucr/" />
	</analytic>
	<monogr>
		<title level="m">W3C Working Draft</title>
				<imprint>
			<date type="published" when="2008-12">December 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>Polleres</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Boley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kifer</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/rif-dtb/" />
		<title level="m">RIF Datatypes and Built-Ins 1.0. W3C Working Draft</title>
				<imprint>
			<date type="published" when="2009-07">July 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">RIF Core Dialect</title>
		<author>
			<persName><forename type="first">H</forename><surname>Boley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Hallmark</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kifer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Paschke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Polleres</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Reynolds</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/rif-core/" />
	</analytic>
	<monogr>
		<title level="m">W3C Working Draft</title>
				<imprint>
			<date type="published" when="2009-07">July 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">RIF Basic Logic Dialect</title>
		<author>
			<persName><forename type="first">H</forename><surname>Boley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kifer</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/rif-bld/" />
	</analytic>
	<monogr>
		<title level="m">W3C Working Draft</title>
				<imprint>
			<date type="published" when="2009-07">July 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes</title>
		<author>
			<persName><forename type="first">D</forename><surname>Peterson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">S</forename><surname>Gao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Malhotra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">M</forename><surname>Sperberg-Mcqueen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">S</forename><surname>Thompson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">V</forename><surname>Biron</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/2009/CR-xmlschema11-2-20090430/" />
	</analytic>
	<monogr>
		<title level="m">W3C Candidate Recommendation</title>
				<imprint>
			<date type="published" when="2009-04">April 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">rdf:PlainLiteral: A Datatype for RDF Plain Literals</title>
		<author>
			<persName><forename type="first">J</forename><surname>Bao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Hawke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Motik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">F</forename><surname>Patel-Schneider</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Polleres</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/rdf-plain-literal/" />
	</analytic>
	<monogr>
		<title level="m">W3C Candidate Recommendation</title>
				<imprint>
			<date type="published" when="2009-06">June 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">XQuery 1.0 and XPath 2.0 Functions and Operators</title>
		<author>
			<persName><forename type="first">A</forename><surname>Malhotra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Melton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Walsh</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/xpath-functions/" />
	</analytic>
	<monogr>
		<title level="m">W3C Recommendation</title>
				<imprint>
			<date type="published" when="2007-01">January 2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">Dojo The Definitive Guide</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">A</forename><surname>Russell</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2008">2008</date>
			<publisher>O&apos;REILLY</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<ptr target="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-357.pdf" />
		<title level="m">ECMA: ECMAScript for XML (E4X) Specification</title>
				<imprint>
			<date type="published" when="2005-12">December 2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">RIF Framework for Logic Dialects</title>
		<author>
			<persName><forename type="first">H</forename><surname>Boley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kifer</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/rif-fld/" />
	</analytic>
	<monogr>
		<title level="m">W3C Working Draft</title>
				<imprint>
			<date type="published" when="2009-07">July 2009</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
