EDOAL: Expressive and Declarative Ontology Alignment Language
The Expressive and Declarative Ontology Alignment Language (EDOAL)
allows for representing
correspondences between the entities of different ontologies. Unlike
other formats, the alignment vocabulary allows to represent complex
correspondences allowing to precisely describe the relation between
the entities. The alignment vocabulary extends
the alignment format.
Purpose
Representing ontology alignments is the general purpose of this vocabulary. Particularly, it extends the ontology alignment format in order to enable the representation of complex correspondences.
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.
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.
Features
The alignment vocabulary has the following features:
Construction of entities from other entities can be expressed through
algebraic operators. Constructed entities allows to overcome the
shallowness of some ontologies.
Restrictions 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.
Transformations of property values can be
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.
Linkkeys can be defined for expressing conditions under
which, instances of the aligned entities should be considered equivalent.
The buttons below can be used to show or hide the available syntaxes.
In case of conflict, the RDF/XML syntax is the authoritative one.
This is also the one for which we have developed parsers and renderers.
However, we are glad that you report errors in the other syntaxes as well.
Alignment and cells
In the alignment format, an alignment is a set of cells, each cell being a correspondence between two entities. The alignment vocabulary extend this scheme by allowing cells to contain compound entity descriptions. Each entity can be typed according to one of the following category: Class, Instance, Relation, Property. A relation corresponds to an object property in OWL, a property to a datatype property. Each entity can then be restricted, and transformation can be specified on propery values.
While Alignment and Cell are described by the alignment format, we will focus here on the remaining classes.
Namespaces
The namespace for the Alignment format is
still http://knowledgeweb.semanticweb.org/heterogeneity/alignment#
(usual prefix: align).
EDOAL's own namespace is http://ns.inria.org/edoal/1.0/ (usual
prefix: edoal). EDOAL vocabulary is dereferenceable (see below).
Alignment format
An EDOAL alignment is an alignment as specified by the alignment format.
It is identified by its level which must be "2EDOAL".
This tells tools that the alignment is on level 2, i.e., correspondences are across constructed entities, and that the corresponding entities are specified according to the expressive language.
This ensures the compatibility with other extensions of the format.
The alignment moreover specifies the two aligned ontologies, and as
exemplified in the code below.
As the example shows, the EDOAL vocabulary only appears within the
"entity" properties and very specificaly in
the edoal:transformation and edoal:linkkey
properties.
The correspondence between the two entities could have been expressed
in the simple Alignment format because these have named entities
identified by a URI. However, the correspondence provides more
information because it tells that these entities are Classes.
The strength of EDOAL is to express more complex entities which are
described below.
Entities
A quick overview of the implemented EDOAL API is provided here (abstract
classes are in bold and interfaces in italics):
The Id interface is implemented by expressions identified by
an URI: these are the named entities of ontologies that may be used in
basic URIAlignments. The ValueExpression is implemented by
expressions that identify in context a particular value or instance.
This can be an instance or a literal as well as a path expression that
leads to that value in the context of an instance.
Hence, the entities that can be found in cells are:
Below are the syntactic declaration of these entities.
Class expressions
Class entities can be constructed using one of the three operators and, or,
not.
and represents the interesection of the classes in the
expression
or represents the union of the classes in the expression
not represents the negation of a given class.
A class can also be identified by using its URI or defined through a
restriction. There are four types of class restrictions:
AttributeDomainRestriction which restricts the values of
relations to be in a particular class;
AttributeTypeRestriction which restricts the values of
properties to be in a particular type;
AttributeValueRestriction which restricts the value of
properties or relations to a particular value;
AttributeOccurenceRestriction which constrains the
cardinality of a property or relation;
These four types of restrictions restrict the scope of a class expression by applying a restriction to the value, type or cardinality of a particular property or relation.
Restrictions are defined by giving an path expression (relation or property), a comparator defining the relation to a value.
This grammar relies on base values described in the following
table:
onatt ::= <onAttribute> attexpr </onAttribute>
typerest ::= <datatype> type </datatype>
type ::= <Datatype rdf:about=" URI " />
classrest ::= <class> classexpr </class>
comp ::= <comparator rdf:resource=" URI "/>
Comparators have to be defined as specific URI, usually in the edoal
namespace. They are currently described by: edoal:equals,
edoal:lower-than, edoal:greater-than, the latter morally corresponding to the
op:numeric-less-than and op:numeric-greater-than from
the XQuery 1.0 and
XPath 2.0 Functions and Operators recommendation.
Hence, a class expression may be an identified class:
Thanks to paths and restrictions, it is possible to restrict a correspondence to ``Wines whose producing region is located in Aquitaine'' using the following restriction:
Relations correspond to object properties in OWL. Relation expressions can be constructed using one of the operators and, or,
not and compose as well as "closure" operator inverse,
symmetric, transitive and reflexive:
and denotes the conjunction of several relations, i.e.,
the set of pairs of individuals which are in all the relations,
or denotes the disjunction of several relations, i.e.,
the set of pairs of individuals which are in one of the relations,
not denotes the complement of a relation, i.e., the set of
pairs of individuals which are not in the relation,
compose denotes the
inverse denotes the converse of a relation,
symmetric denotes the symmetric closure of a relation
(this is equivalent to or( p inverse( p ) ),
transitive denotes the transitive closure of a relation,
reflexive denotes the reflexive closure of a relation.
A relation can also be identified by using its URI or defined through
a restriction. There are two classes of relation restrictions:
An example of occurrence restriction would be the wines produced in a region with no adjacent region, such as an island. For instance Moscatel Madeira wine is produced on the island of Madeira.
Another example
uses a path to state that a locally grown wine is a wine whose owner (propriétaire) is the same person as the first seller (négociant) for this wine.
Note that compose may take no
argument in case of relations. This may be useful in some
circumstances.
<compose rdf:parseType="Collection"/> is equivalent to
the identity relation, hence when applied to an object has for
unique value the object itself (it is the equivalent self
or this in some languages).
Values
A value expression may be used in alignments for denoting an
individual things (not a class, a property or a relations). These
values may be:
a litteral value;
an individual instance;
a value reachable to a property or relation;
a value computable by a function from arguments which are values.
They obey the following grammar:
val ::= <value> value </value>
value ::= <Literal {edoal:type=" URI "} edoal:string=" STRING " />
| instexpr
| attrexpr
| <Apply edoal:operator=" URI "> <arguments rdf:parseType="Collection">value*</arguments> </Apply>
instexpr ::= <Instance rdf:about=" URI "/>
URIs to use as the operator attribute of Apply are not specified. It
is however advised, when possible, to use operators from
the XQuery 1.0 and
XPath 2.0 Functions and Operators recommendation.
(fn: prefix used for http://www.w3.org/2005/xpath-functions).
Transformations
The development of transformations is still work in progress and you
can contribute by providing your requirements.
Transformations are expressed in the cell itself. Transformations do
not express constraints on the classes or properties, but constraints
on instances that should match.
stating that whatever an instance of the class c has the same
values for
properties p1,... pn as an
instance of class d has for
properties q1,... qn and
that their values for respectively p'1,... p'm
and q'1,... q'm instersect pairwise, then
these two are the same entity.
Such keys are slightly more complex than in databases because in RDF
properties are not necessarily functional (they may have several
values) and their values may be other objects. For this reason, it is
necessary to indicate if it is required that all values must be the same
(Equals) or if some of them must instersect (Intersects).
Linkkeys are primarily used for identifying identical objects.
For instance, it may be that a instance of the Livre class is
equivalent to an instance of the Novel class as soon as their
properties auteur and titre on the one side
and creator and title on the other side have the same values.
This is expressed in the following example:
It is then possible to identify duplicates or to
generate owl:sameAs links.
Longer examples
The best examples are the alignment files found in the
"examples/omwg" directory of the Alignment API release zip.
The following examples illustrate various kids of usage of the vocabulary.
Class partition
This example shows how to express a correspondence between a class 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 color attribute.
O1:LED a edoal:Class;
O1:hasColor a edoal:Relation.
O1:Blue a edoal:Instance.
O2:BlueLED a edoal:Class.
:cell1 a align:Cell;
align:entity1 [
edoal:and [
edoal:onAttribute O1:hasColor;
edoal:comparator function:equals;
edoal:value O1:Blue.
];
edoal:and O1:LED.
align:entity2 O2:BlueLED.
O1:Red a edoal:Instance.
O2:RedLED a edoal:Class.
:cell2 a align:Cell;
align:entity1 [
edoal:and [
edoal:onAttribute O1:hasColor;
edoal:comparator function:equals;
edoal:value O1:Red.
];
edoal:and O1:LED.
align:entity2 O2:RedLED.
O1:Green a edoal:Instance.
O2:GreenLED a edoal:Class.
:cell3 a align:Cell;
align:entity1 [
edoal:and [
edoal:onAttribute O1:hasColor;
edoal:comparator function:equals;
edoal:value O1:Green.
];
edoal:and O1:LED.
align:entity2 O2:GreenLED.
Graph
Property value transformation (XPath function)
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.
We give two valid versions of this correspondence depending on if
the correspondence applies to the two properties (version 1) or the
bearer of the transformed properties (version 2).
01:hasWeight a edoal:Property.
O2:weight a edoal:Property.
:cell a align:Cell;
align:entity1 O1:hasWeight;
align:entity2 [
a Transformation;
fn:safe-divide [
a rdf:Seq;
rdf:li O2:weight;
rdf:li 2.679229.
].
].
Graph
Property value transformation (other service)
This example illustrates the conversion between two currencies. A transformation service is specified.
O1:price a edoal:Property.
O2:hasPrice a edoal:Property.
:cell a align:Cell;
align:entity1 [
edoal:function <http://www.google.com/finance/converter?>;
edoal:parameters [ rdf:li O1:price;
rdf:li "from=EUR";
rdf:li "to=CNY".
].
];
align:entity2 O2:hasPrice.
Graph
Class with attribute value restriction
This alignment pattern makes use of three variables. Var3 is a
property variable representing a property having in its domain the
class identified by the variable Var1.
Moreover, the property Var3 has an integer 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".
:var1 a edoal:Variable;
a edoal:Class.
:var2 a edoal:Variable;
a edoal:Class;
:var3 a edoal:Variable;
a edoal:Property;
edoal:and [
edoal:domainRestriction :var1.
].
edoal:and [
edoal:typeRestriction <http://www.w3.org/2001/XMLSchema#integer>.
].
:Cell1 a align:Cell;
align:entity1 [
edoal:and :var1;
edoal:and [
a edoal:Restriction;
edoal:onAttribute :var3.
].
].
align:entity2 :var2.
Graph
EDOAL Pattern
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 which are already present in the previous example).
It will be released at a later stage. Ask François Scharffe
for a more complete description of the EDOAL Pattern language.
Due to popular demand, here is the derefenceable version of the RDF
vocabulary used in the format. Official URI is http://ns.inria.org/edoal/1.0/.
Beware, that EDOAL has been designed as
a format and an API rather than a generic RDF vocabulary. A natural
ontology would be closer to the API but would give a more verbose
EDOAL format. The EDOAL format is in RDF and compact. In consequence,
not any RDF graph using the EDOAL vocabulary is a well-defined EDOAL
alignment. In particular, RDF can express incomplete knowledge while
the EDOAL API requires complete knowledge of the alignment.
This language has been first designed by François Scharffe as
the SEKT Mapping language.
It then became the OMWG Ontology Mapping language developed under the
Sourceforge mappingapi project
(http://sourceforge.net/projects/mediation/). This
language was further described by François Scharffe,
Jérôme Euzenat and Antoine Zimmermann
in Knowledge
web deliverable 2.2.10, in particular through the semantics of
the language. Its implementation was also reengineered as an extension
of the alignment format so that it could be
manipulated through the Alignment API tools (starting version 3.1).
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.
The linkkey idea has been promoted by Jérôme Euzenat,
further refined with Jérôme David and Manuel Atencia
and finally implemented in the Alignment API (version 4.7) by Nicolas
Guillouet.