Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 60720096 authored by Jérôme Euzenat's avatar Jérôme Euzenat
Browse files

- updated with the grammar to be implemented

parent 96747b36
No related branches found
No related tags found
No related merge requests found
...@@ -13,32 +13,34 @@ ...@@ -13,32 +13,34 @@
<h1 class="titre">EDOAL: Expressive and Declarative Ontology Alignment Language</h1> <h1 class="titre">EDOAL: Expressive and Declarative Ontology Alignment Language</h1>
<p style="background-color: yellow;"> <p style="background-color: yellow;">
This page is under heavy revision for the implementation of the This page is under heavy revision for the implementation of the
version 4.0 of the Alignment API. version 4.0 of the Alignment API.
</p> </p>
<p> <p>
This page presents the support for expressive and declarative ontology alignment The Expressive and Declarative Ontology Alignment Language (EDOAL)
language built-in the Alignment API. This vocabulary allows the representation of allows for representing
correspondences between the entities of different ontologies. Unlike correspondences between the entities of different ontologies. Unlike
other formats, the alignment vocabulary allows to represent complex other formats, the alignment vocabulary allows to represent complex
correspondences allowing to precisely describe the relation between correspondences allowing to precisely describe the relation between
the entities. The alignment vocabulary extends the entities. The alignment vocabulary extends
the <a href="format.html">alignment format</a>.</p> the <a href="format.html">alignment format</a>.</p>
<dl> <!--dl>
<dt><a href="#sec:purpose">Purpose</a></dt> <dt><a href="#sec:purpose">Purpose</a></dt>
<dt><a href="#sec:features">Features</a></dt> <dt><a href="#sec:features">Features</a></dt>
<dt><a href="#sec:vocabulary">Vocabulary</a></dt> <dt><a href="#sec:vocabulary">Vocabulary</a></dt>
<!--<dl> <dl>
<dd><a href="#ssec:classes">Classes</a></dd> <dd><a href="#ssec:classes">Classes</a></dd>
<dd><a href="#ssec:properties">Properties</a></dd> <dd><a href="#ssec:properties">Properties</a></dd>
<dd><a href="#ssec:relations">Relations</a></dd> <dd><a href="#ssec:relations">Relations</a></dd>
<dd><a href="#ssec:instances">Instances</a></dd> <dd><a href="#ssec:instances">Instances</a></dd>
</dl>--> </dl>
</dt> </dt>
<dt><a href="#sec:examples">Examples</a></dt> <dt><a href="#sec:examples">Examples</a></dt>
</dl> </dl-->
<h2 id="sec:purpose">Purpose</h2> <h2 id="sec:purpose">Purpose</h2>
<p>Representing ontology alignments is the general purpose of this vocabulary. Particularly, it extends the ontology <a href="format.html">alignment format</a> in order to enable the representation of complex correspondences.</p> <p>Representing ontology alignments is the general purpose of this vocabulary. Particularly, it extends the ontology <a href="format.html">alignment format</a> in order to enable the representation of complex correspondences.</p>
<p>This format can be used for cases where expressing equivalence or subsumption between terms is not sufficient, when more precise relations need to be expressed. While term equivalence or subsumption might be enough for exchanging documents, more precise relations are needed to exchange and integrate data.</p> <p>This format can be used for cases where expressing equivalence or subsumption between terms is not sufficient, when more precise relations need to be expressed. While term equivalence or subsumption might be enough for exchanging documents, more precise relations are needed to exchange and integrate data.</p>
...@@ -46,11 +48,17 @@ the <a href="format.html">alignment format</a>.</p> ...@@ -46,11 +48,17 @@ the <a href="format.html">alignment format</a>.</p>
<p>This vocabulary was originally designed with the goal of representing patterns of correspondence between ontologies. It was since then both simplified and extended to obtain a minimal vocabulary on top of the alignment format, able to express all possible kinds of ontology alignments.</p> <p>This vocabulary was originally designed with the goal of representing patterns of correspondence between ontologies. It was since then both simplified and extended to obtain a minimal vocabulary on top of the alignment format, able to express all possible kinds of ontology alignments.</p>
<h2 id="sec:features">Features</h2> <h2 id="sec:features">Features</h2>
The alignment vocabulary has the following features: The alignment vocabulary has the following features:
<ul> <ul>
<li><b>Construction</b> of entities from other entities can be expressed through
algebraic operators. Constructed entities allows to supply the
shallowness of some ontologies.</li>
<li><b>Restrictions</b> can be expressed on entities in order to narrow their scope. Narrowing the scope of an entity makes possible to better align this entity with the one corresponding in the other ontology.</li> <li><b>Restrictions</b> can be expressed on entities in order to narrow their scope. Narrowing the scope of an entity makes possible to better align this entity with the one corresponding in the other ontology.</li>
<li><b>Transformations</b> of property values can be specified. Property values using different encoding or units can be aligned using transformations.</li> <li><b>Transformations</b> of property values can be
<li><b>Properties composition</b> can be expressed to target values through a path of properties.</li> specified. Property values using different encoding or units can be
aligned using transformations. The current version of Edoal only
supports a limited kind of transformations. This will be improved soon.</li>
</ul> </ul>
<h2 id="sec:vocabulary">Vocabulary</h2> <h2 id="sec:vocabulary">Vocabulary</h2>
...@@ -65,7 +73,7 @@ The diagram below shows the vocabulary classes ??? ...@@ -65,7 +73,7 @@ The diagram below shows the vocabulary classes ???
</p> </p>
<p> <p>
While <i>Alignment</i> and <i>Cell</i> are described by the alignment format, we will focus here on the remaining classes.</p> While <i>Alignment</i> and <i>Cell</i> are described by the <a href="format.html">alignment format</a>, we will focus here on the remaining classes.</p>
<h3 id="ssec:headers">Headers</h3> <h3 id="ssec:headers">Headers</h3>
...@@ -76,7 +84,7 @@ still <tt>http://knowledgeweb.semanticweb.org/heterogeneity/alignment#</tt> ...@@ -76,7 +84,7 @@ still <tt>http://knowledgeweb.semanticweb.org/heterogeneity/alignment#</tt>
(usual prefix: align). (usual prefix: align).
</p> </p>
<p> <p>
EDOAL's own namespace is <tt>http://ns.inria.org/edoal/</tt> (usual EDOAL's own namespace is <tt>http://ns.inria.org/edoal/1.0/</tt> (usual
prefix: edoal). prefix: edoal).
</p> </p>
<p> <p>
...@@ -88,17 +96,34 @@ recommendation: <tt>http://www.w3.org/2005/xpath-functions</tt> ...@@ -88,17 +96,34 @@ recommendation: <tt>http://www.w3.org/2005/xpath-functions</tt>
<p>As specified by the alignment format, an alignment contains a set of correspondences (cells). Each cell can be linked to an alignment using the <i>map</i> property. The alignment moreover specifies the two aligned ontologies, and as exemplified in the code below.</p> <p>As specified by the alignment format, an alignment contains a set of correspondences (cells). Each cell can be linked to an alignment using the <i>map</i> property. The alignment moreover specifies the two aligned ontologies, and as exemplified in the code below.</p>
<div class="fragment"><pre> <div class="fragment"><pre>
&lt;align:Alignment rdf:about=""> &lt;?xml version='1.0' encoding='utf-8' standalone='no'?>
&lt;align:xml>yes&lt;/align:xml> &lt;rdf:RDF xmlns='http://knowledgeweb.semanticweb.org/heterogeneity/alignment#'
&lt;dc:creator rdf:resource="http://sw.deri.org/~francois/"/> xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
&lt;dc:date>2006/06/07&lt;/dc:date> xmlns:xsd='http://www.w3.org/2001/XMLSchema#'
&lt;align:method>manual&lt;/align:method> xmlns:align='http://knowledgeweb.semanticweb.org/heterogeneity/alignment#'>
&lt;align:purpose>example&lt;/align:purpose> &lt;Alignment>
&lt;align:level>2&lt;/align:level> &lt;xml>yes&lt;/xml>
&lt;align:type>**&lt;/align:type> &lt;level>0&lt;/level>
&lt;align:onto1 rdf:about="http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"/> &lt;type>**&lt;/type>
&lt;align:onto2 rdf:about="http://www.scharffe.fr/ontologies/OntologieDuVin"/> &lt;align:method>fr.inrialpes.exmo.align.impl.method.StringDistAlignment&lt;/align:method>
&lt;/align:Alignment> &lt;align:time>7&lt;/align:time>
&lt;onto1>
&lt;Ontology rdf:about="http://www.example.org/ontology1">
&lt;location>file:examples/rdf/onto1.owl&lt;/location>
&lt;formalism>
&lt;Formalism align:name="OWL1.0" align:uri="http://www.w3.org/2002/07/owl#"/>
&lt;/formalism>
&lt;/Ontology>
&lt;/onto1>
&lt;onto2>
&lt;Ontology rdf:about="http://www.example.org/ontology2">
&lt;location>file:examples/rdf/onto2.owl&lt;/location>
&lt;formalism>
&lt;Formalism align:name="OWL1.0" align:uri="http://www.w3.org/2002/07/owl#"/>
&lt;/formalism>
&lt;/Ontology>
&lt;/onto2>
...
</pre></div> </pre></div>
<p>Details on each property are available on the <a href="format.html">alignment format</a> page.</p> <p>Details on each property are available on the <a href="format.html">alignment format</a> page.</p>
...@@ -116,9 +141,43 @@ not</i>.<ul> ...@@ -116,9 +141,43 @@ not</i>.<ul>
A class can be defined using its URI or a restriction. Restrictions are defined by giving an <i>attribute</i> (relation or property), a <i>comparator</i> defining the relation to a <i>value</i>.</p> A class can be defined using its URI or a restriction. Restrictions are defined by giving an <i>attribute</i> (relation or property), a <i>comparator</i> defining the relation to a <i>value</i>.</p>
<div class="fragment"><pre> <div class="fragment"><pre>
<u>classexpr</u> ::= &lt;Class rdf:about=" <u>uri</u> "/>
| &lt;Class> <u>classconst</u> &lt;/Class>
| &lt;AttributeOccurenceRestriction> <u>onatt</u> <u>comp</u> <u>int</u> &lt;/AttributeOccurenceRestriction>
| &lt;AttributeDomainConstraint> <u>onatt</u> (<u>classexpr</u>|<u>type</u>) &lt;/AttributeDomainConstraint>
| &lt;AttributeValueRestriction> <u>onatt</u> <u>comp</u> (<u>instexpr</u>|<u>val</u>) &lt;/AttributeValueRestriction>
<u>classconst</u> ::= &lt;and rdf:parseType="Collection"> <u>classexpr</u>+&lt;/and>
| &lt;or rdf:parseType="Collection"> <u>classexpr</u>+ &lt;/or>
| &lt;not> <u>classexpr</u> &lt;/not>
</pre></div>
<p>This grammar relies on base values described in the following
table:</p>
<div class="fragment"><pre>
<u>entity</u> ::= <u>instexpr</u> | <u>classexpr</u> | <u>attexpr</u>
<u>attexpr</u> ::= <u>propexpr</u> | <u>relexpr</u>
<u>onatt</u> ::= &lt;onAttribute> <u>attexpr</u> &lt;/onAttribute>
<u>val</u> ::= &lt;value> <u>value</u> &lt;/value>
<u>datatype</u> ::= &lt;type> <u>value</u> &lt;/type>
<u>comp</u> ::= &lt;comparator rdf:resource=" <u>uri</u> "/>
// String does not work here
<u>value</u> ::= <u>string</u> | <u>instepr</u> | <u>attrexpr</u>
| &lt;Apply operation=" <u>uri</u> "> <u>value</u>* &lt;/Apply>
</pre></div>
<!--div class="fragment"><pre>
classexpr ::= &lt;Class {rdf:about="uri"}?\&gt; classexpr ::= &lt;Class {rdf:about="uri"}?\&gt;
classconst* classconst*
&lt;/Class\&gt; &lt;/Class&gt;
classconst ::= &lt;and> classconst ::= &lt;and>
classexpr classexpr
...@@ -135,16 +194,31 @@ class-restriction ::= &lt;Restriction> ...@@ -135,16 +194,31 @@ class-restriction ::= &lt;Restriction>
&lt;comparator rdf:about={xsd-comparator} /> &lt;comparator rdf:about={xsd-comparator} />
&lt;value>value&lt;/value> &lt;value>value&lt;/value>
&lt;/Restriction> &lt;/Restriction>
</pre></div> </pre></div-->
<p>Comparators are taken from the XPath function specification [<a href="http://www.w3.org/TR/xpath-functions">1</a>].</p> <p>Comparators are taken from the XPath function specification [<a href="http://www.w3.org/TR/xpath-functions">1</a>].</p>
<h4 id="ssec:properties">Properties</h4> <h4 id="ssec:properties">Properties</h4>
<p>Properties entities can be constructed using one of the operators <i>and, or, <p>Properties entities can be constructed using one of the operators <i>and, or,
not</i>. Using <i>first</i> and <i>next</i>, properties can be composed using a path of relations ending with a data property. not</i> and <i>compose</i>.
Property values can be transformed by applying a <i>Transformation</i> function. </p> Property values can be transformed by applying a <i>Transformation</i> function. </p>
<div class="fragment"><pre> <div class="fragment"><pre>
<u>propexpr</u> ::= &lt;Property rdf:about=" <u>uri</u> "/>
| &lt;Property> <u>propconst</u>+ &lt;/Property>
| &lt;PropertyDomainRestriction> &lt;class> <u>classexpr</u> &lt;/class> &lt;/PropertyDomainRestrict
| &lt;PropertyTypeRestriction> <u>datatype</u> &lt;/PropertyTypeRestriction>
| &lt;PropertyValueRestriction> <u>comp</u> <u>val</u> &lt;/PropertyValueRestriction><!--
| <u>transf</u>-->
<u>propconst</u> ::= &lt;and rdf:parseType="Collection"> <u>propexpr</u>+ &lt;/and>
| &lt;or rdf:parseType="Collection"> <u>propexpr</u>+ &lt;/or>
| &lt;not> <u>propexpr</u> &lt;/not>
| &lt;compose> <u>relexpr</u>* <u>propexpr</u> &lt;/compose>
</pre></div>
<!--div class="fragment"><pre>
propexpr ::= &lt;Property {rdf:about="uri"}? > propexpr ::= &lt;Property {rdf:about="uri"}? >
propconst* propconst*
&lt;/Property> &lt;/Property>
...@@ -180,14 +254,30 @@ transformation ::= &lt;Transformation> ...@@ -180,14 +254,30 @@ transformation ::= &lt;Transformation>
&lt;/rdf:Seq> &lt;/rdf:Seq>
&lt;/parameters> &lt;/parameters>
&lt;/Transformation> &lt;/Transformation>
</pre></div> </pre></div-->
<p>Transformations are of two kinds, either XPath transformation functions can be used, or other transformation services can be invoked, for example for dynamic transformations like currency conversions (see <a href="#sec:examples">examples</a>).</p> <p>Transformations are of two kinds, either XPath transformation functions can be used, or other transformation services can be invoked, for example for dynamic transformations like currency conversions (see <a href="#sec:examples">examples</a>).</p>
<h4 id="ssec:relations">Relations</h4> <h4 id="ssec:relations">Relations</h4>
<p>Relations correspond to object properties in OWL. Relation entities can be constructed using the operators <i>and, or, <p>Relations correspond to object properties in OWL. Relation entities can be constructed using the operators <i>and, or,
not</i>, but also <i>inverse, transitive, reflexive,</i> and <i>symmetric</i>. Like properties they can also be composed in a path of relations using <i>first</i> and <i>next</i>. Relations <i>domain</i> and <i>range</i> can be restricted.</p> not, compose</i>, but also <i>inverse, transitive, reflexive,</i> and <i>symmetric</i>. Like properties they can also be composed in a path of relations using <i>first</i> and <i>next</i>. Relations <i>domain</i> and <i>range</i> can be restricted.</p>
<div class="fragment"><pre> <div class="fragment"><pre>
<u>relexpr</u> ::= &lt;Relation rdf:about=" <u>uri</u> "/>
| &lt;Relation> <u>relconst</u>+ &lt;/Relation>
| &lt;RelationDomainRestriction> &lt;class> <u>classexpr</u> &lt;/class> &lt;/RelationDomainRestriction
| &lt;RelationCoDomainRestriction> &lt;class> <u>classexpr</u> &lt;/class> &lt;/RelationCoDomainRestriction
<u>relconst</u> ::= &lt;and rdf:parseType="Collection"> <u>relexpr</u>+ &lt;/and>
| &lt;or rdf:parseType="Collection"> <u>relexpr</u>+ &lt;/or>
| &lt;not> <u>relexpr</u> &lt;/not>
| &lt;compose> <u>relexpr</u>+ &lt;/compose>
| &lt;inverse> <u>relexpr</u> &lt;/inverse>
| &lt;symmetric> <u>relexpr</u> &lt;/symmetric>
| &lt;transitive> <u>relexpr</u> &lt;/transitive>
| &lt;reflexive> <u>relexpr</u> &lt;/reflexive>
</pre></div>
<!--div class="fragment"><pre>
relexpr ::= &lt;Relation {rdf:about="uri"}? > relexpr ::= &lt;Relation {rdf:about="uri"}? >
relconst * relconst *
&lt;/Relation> &lt;/Relation>
...@@ -209,26 +299,21 @@ relconst ::= &lt;and> ...@@ -209,26 +299,21 @@ relconst ::= &lt;and>
relation-restriction ::= &lt;Restriction>&lt;domainRestriction>classexpr&lt;/domainRestriction>&lt;/Restriction> relation-restriction ::= &lt;Restriction>&lt;domainRestriction>classexpr&lt;/domainRestriction>&lt;/Restriction>
| &lt;Restriction>&lt;rangeRestriction>classexpr&lt;/rangeRestriction>&lt;/Restriction> | &lt;Restriction>&lt;rangeRestriction>classexpr&lt;/rangeRestriction>&lt;/Restriction>
</pre></div> </pre></div-->
<h4 id="ssec:instances">Instances</h4> <h4 id="ssec:instances">Instances</h4>
<p>Instances are always single entitie.</p> <p>Instances are always single entities refering to an individual
through its URI.</p>
<div class="fragment"><pre> <div class="fragment"><pre>
instance ::= &lt;Instance rdf:about="uri"/> <u>instance</u> ::= &lt;Instance rdf:about=" <u>uri</u> "/>
</pre></div>
<h3 id="ssec:variables">Variables</h3>
<p>Variables are useful to represent alignment patterns. (see <a href="#ssec:ex4">Example 4</a>) A variable can be linked to an identifier string, and can be bounded to an entity.</p>
<div class="fragment"><pre>
variable ::= &lt;Variable>
&lt;var_id>string&lt;/var_id>
&lt;var_binding rdf:resource="uri"/>
&lt;/Variable>
</pre></div> </pre></div>
<h2 id="sec:examples">Examples</h2> <h2 id="sec:examples">Examples</h2>
<p>The following exmples illustrate various kids of usage of the vocabulary.</p> <p>The following exmples illustrate various kids of usage of the vocabulary.</p>
<h3 id="ssec:ex1">Class partition</h3> <h3 id="ssec:ex1">Class partition</h3>
<p>This example shows how to express a correspondence between a classes in one ontology corresponding to a set of classes in the other ontology. In order to graps the precise correspondence, the one class is partitioned according to the value of one of its attributes. In this example one ontology has a class LED which has a property color, while the other ontology has three classes RedLED, BlueLED, and GreenLED. The LED class is aligned with the three corresponding classes by specifying a restriction of its scope to the corresponding value of the <i>color</i> attribute.</p> <p>This example shows how to express a correspondence between a classes in one ontology corresponding to a set of classes in the other ontology. In order to graps the precise correspondence, the one class is partitioned according to the value of one of its attributes. In this example one ontology has a class LED which has a property color, while the other ontology has three classes RedLED, BlueLED, and GreenLED. The LED class is aligned with the three corresponding classes by specifying a restriction of its scope to the corresponding value of the <i>color</i> attribute.</p>
<!--The following figure illustrates the alignment:</p> <!--The following figure illustrates the alignment:</p>
...@@ -236,54 +321,56 @@ variable ::= &lt;Variable> ...@@ -236,54 +321,56 @@ variable ::= &lt;Variable>
<p>The alignment expressed in RDF/N3 is the following:</p> <p>The alignment expressed in RDF/N3 is the following:</p>
<div class="detail" id="ex1n3"><pre> <div class="detail" id="ex1n3"><pre>
O1:LED a align:Class; O1:LED a edoal:Class;
O1:hasColor a align:Relation. O1:hasColor a edoal:Relation.
O1:Blue a align:Instance. O1:Blue a edoal:Instance.
O2:BlueLED a align:Class. O2:BlueLED a edoal:Class.
:cell1 a align:Cell; :cell1 a align:Cell;
align:entity1 [ align:entity1 [
align:and [ edoal:and [
align:onProperty O1:hasColor; edoal:onProperty O1:hasColor;
align:comparator function:equals; edoal:comparator function:equals;
align:value O1:Blue. edoal:value O1:Blue.
]; ];
align:and O1:LED. edoal:and O1:LED.
align:entity2 O2:BlueLED. align:entity2 O2:BlueLED.
O1:Red a align:Instance. O1:Red a edoal:Instance.
O2:RedLED a align:Class. O2:RedLED a edoal:Class.
:cell2 a align:Cell; :cell2 a align:Cell;
align:entity1 [ align:entity1 [
align:and [ edoal:and [
align:onProperty O1:hasColor; edoal:onProperty O1:hasColor;
align:comparator function:equals; edoal:comparator function:equals;
align:value O1:Red. edoal:value O1:Red.
]; ];
align:and O1:LED. edoal:and O1:LED.
align:entity2 O2:RedLED. align:entity2 O2:RedLED.
O1:Green a align:Instance. O1:Green a edoal:Instance.
O2:GreenLED a align:Class. O2:GreenLED a edoal:Class.
:cell3 a align:Cell; :cell3 a align:Cell;
align:entity1 [ align:entity1 [
align:and [ edoal:and [
align:onProperty O1:hasColor; edoal:onProperty O1:hasColor;
align:comparator function:equals; edoal:comparator function:equals;
align:value O1:Green. edoal:value O1:Green.
]; ];
align:and O1:LED. edoal:and O1:LED.
align:entity2 O2:GreenLED. align:entity2 O2:GreenLED.
</pre></div> </pre></div>
<p>The corresponding graph:</p> <p>The corresponding graph:</p>
<center>
<!--<img src="graph-partition-pattern-alignment-representation-small.png" border="0" alt="">--> <!--<img src="graph-partition-pattern-alignment-representation-small.png" border="0" alt="">-->
<object type="image/svg+xml" data="img/graph-partition-pattern-alignment-representation-corrected.svg" width="600" height="300"> <object type="image/svg+xml" data="img/graph-partition-pattern-alignment-representation-corrected.svg" width="600" height="300">
</object> </object>
</center>
<h3 id="ssec:ex2">Property value transformation (XPath function)</h3> <h3 id="ssec:ex2">Property value transformation (XPath function)</h3>
<p>This exemple shows how to use a transformation between property values. Two cases can be considered: static transformations such as unit conversion, and transformations which vary over time such as currency conversions. This example illustrates a static conversion from pounds to kilograms using a XPath function.</p> <p>This exemple shows how to use a transformation between property values. Two cases can be considered: static transformations such as unit conversion, and transformations which vary over time such as currency conversions. This example illustrates a static conversion from pounds to kilograms using a XPath function.</p>
<div class="detail" id="ex2n3"><pre> <div class="detail" id="ex2n3"><pre>
01:hasWeight a align:Property. 01:hasWeight a edoal:Property.
O2:weight a align:Property. O2:weight a edoal:Property.
:cell a align:Cell; :cell a align:Cell;
align:entity1 O1:hasWeight; align:entity1 O1:hasWeight;
align:entity2 [ align:entity2 [
...@@ -296,22 +383,25 @@ O2:weight a align:Property. ...@@ -296,22 +383,25 @@ O2:weight a align:Property.
]. ].
</pre></div> </pre></div>
<p>The corresponding graph:</p> <p>The corresponding graph:</p>
<center>
<!--<img src="graph-property-value-xpath-transformation-small.png" border="0" alt="RDF graph of a property value transformation using a XPath function">--> <!--<img src="graph-property-value-xpath-transformation-small.png" border="0" alt="RDF graph of a property value transformation using a XPath function">-->
<object data="img/graph-property-value-xpath-transformation.svg" type="image/svg+xml" width="500" height="70"> <object data="img/graph-property-value-xpath-transformation.svg" type="image/svg+xml" width="500" height="70">
</object> </object>
</center>
<h3 id="ssec:ex3">Property value transformation (other service)</h3> <h3 id="ssec:ex3">Property value transformation (other service)</h3>
<p>This example illustrate the conversion between two currencies. A transformation service is specified.</p> <p>This example illustrates the conversion between two currencies. A transformation service is specified.</p>
<!--<img src="property-data-transformation-small.png" border="0" alt="Property value transformation pattern">--> <!--<img src="property-data-transformation-small.png" border="0" alt="Property value transformation pattern">-->
<p>The alignment expressed in RDF/N3 is the following:</p> <p>The alignment expressed in RDF/N3 is the following:</p>
<div class="detail" id="ex3n3"><pre> <div class="detail" id="ex3n3"><pre>
O1:price a align:Property. O1:price a edoal:Property.
O2:hasPrice a align:Property. O2:hasPrice a edoal:Property.
:cell a align:Cell; :cell a align:Cell;
align:entity1 [ align:entity1 [
align:function &lt;http://www.google.com/finance/converter?>; edoal:function &lt;http://www.google.com/finance/converter?>;
align:parameters [ rdf:li O1:price; edoal:parameters [ rdf:li O1:price;
rdf:li "from=EUR"; rdf:li "from=EUR";
rdf:li "to=CNY". rdf:li "to=CNY".
]. ].
...@@ -319,39 +409,100 @@ O2:hasPrice a align:Property. ...@@ -319,39 +409,100 @@ O2:hasPrice a align:Property.
align:entity2 O2:hasPrice. align:entity2 O2:hasPrice.
</pre></div> </pre></div>
<p>The corresponding graph:</p> <p>The corresponding graph:</p>
<center>
<!--<img src="graph-property-value-transformation-small.png" border="0" alt="Property data transformation RDF graph">--> <!--<img src="graph-property-value-transformation-small.png" border="0" alt="Property data transformation RDF graph">-->
<object data="img/graph-property-value-transformation.svg" type="image/svg+xml" width="600" height="150"> <object data="img/graph-property-value-transformation.svg" type="image/svg+xml" width="600" height="150">
</object> </object>
</center>
<h3 id="ssec:ex4">Class with attribute value restriction</h3> <h3 id="ssec:ex4">Class with attribute value restriction</h3>
<p>This alignment pattern makes use of three variables. Var3 is a property variable representing a property having in its domain the class of the class variable Var1. Morover, the property Var3 has an interger value. This pattern thus captures all correspondences between two classes, the scope of one class being restricted to only those instances having a specific value (not specified by the pattern) for one of its property whith datatype "integer".</p> <p>This alignment pattern makes use of three variables. Var3 is a property variable representing a property having in its domain the class of the class variable Var1. Morover, the property Var3 has an interger value. This pattern thus captures all correspondences between two classes, the scope of one class being restricted to only those instances having a specific value (not specified by the pattern) for one of its property whith datatype "integer".</p>
<div class="detail" id="ex4n3"><pre> <div class="detail" id="ex4n3"><pre>
:var1 a align:Variable; :var1 a edoal:Variable;
a align:Class. a edoal:Class.
:var2 a align:Variable; :var2 a edoal:Variable;
a align:Class; a edoal:Class;
:var3 a align:Variable; :var3 a edoal:Variable;
a align:Property; a edoal:Property;
and [ edoal:and [
domainRestriction :var1. edoal:domainRestriction :var1.
]. ].
and [ edoal:and [
typeRestriction &lt;http://www.w3.org/2001/XMLSchema#integer>. edoal:typeRestriction &lt;http://www.w3.org/2001/XMLSchema#integer>.
]. ].
:Cell1 a align:Cell; :Cell1 a align:Cell;
align:entity1 [ align:entity1 [
and :var1; edoal:and :var1;
and [ edoal:and [
a Restriction; a edoal:Restriction;
align:onProperty :var3. edoal:onProperty :var3.
]. ].
]. ].
align:entity2 :var2. align:entity2 :var2.
</pre></div> </pre></div>
<p>The corresponding graph:</p> <p>The corresponding graph:</p>
<center>
<object data="img/graph-class-with-attribute-value-restriction.svg" type="image/svg+xml" width="530" height="120"> <object data="img/graph-class-with-attribute-value-restriction.svg" type="image/svg+xml" width="530" height="120">
</object> </object>
</center>
<h2>EDOAL Pattern</h2>
<p>
EDOAL also contains a pattern language with allows for expressing
generalised correspondences in which entities can be abstract. This
language is not very different from EDOAL (beside its introduction of
variables).
</p>
<p>
It will be released at a later stage. Ask Fran&ccedil;ois Scharffe
for a more complete description of the EDOAL Pattern language.
</p>
<!--h3 id="ssec:variables">Variables</h3>
<p>Variables are useful to represent alignment patterns. (see <a href="#ssec:ex4">Example 4</a>) A variable can be linked to an identifier string, and can be bounded to an entity.</p>
<div class="fragment"><pre>
variable ::= &lt;Variable>
&lt;var_id>string&lt;/var_id>
&lt;var_binding rdf:resource="uri"/>
&lt;/Variable>
</pre></div-->
<h2>History</h2>
<p>
This language has been first designed by Fran&ccedil;ois Scharffe as
the SEKT Mapping language.
</p>
<p>
It then became the <a href="http://www.omwg.org/TR/d7/rdf-xml-syntax/">OMWG Ontology Mapping language</a> developed under the
Sourceforge mappingapi project
(<a href="http://sourceforge.net/projects/mediation/">http://sourceforge.net/projects/mediation/</a>). This
language was further described by Fran&ccedil;ois Scharffe,
J&eacute;r&ocirc;me Euzenat and Antoine Zimmermann
in <a href="ftp://ftp.inrialpes.fr/pub/exmo/reports/kweb-2210.pdf">Knowledge
web deliverable 2.2.10</a>, in particular through the semantics of
the language. Its implementation was also reengineered as an extension
of the <a href="format.html">alignment format</a> so that it could be
manipulated through the Alignment API tools (starting version 3.1).
</p>
<p>
It has now been redesigned and reimplemented under the name of
EDOAL. It is a plain component of the Alignment API and is maintained
together with it.
</p>
<address>$Id$</address> <address>
<small>
<hr />
<center>http://alignapi.gforge.inria.fr/edoal.html</center>
<hr />
$Id$
</small>
</address>
</body> </body>
</html> </html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment