An E-Connection is a knowledge representation language defined as a combination of other logical formalisms. Each of the component logics has to be expressible in the Abstract Description System (ADS) framework, which includes Description Logics (and hence OWL-DL), Modal and Epistemic logics, as well as many logics of time and space. Obviously, different component logics will give rise to different combined languages, with different expressivity and computational properties.
E-Connections were originally introduced as a way to go beyond the expressivity of each of the component logics, while preserving the decidability of the reasoning services. An E-Connection language is a formalism, strictly more expressive than any of its component logics, and which is decidable, provided that each of its components is decidable. Hence, E-Connections provide a trade-off between the expressivity gained and the computational robustness of the combination.Here, we will use E-Connections as a language for defining and instantiating combinations of OWL-DL ontologies. We will restrict ourselves to OWL-DL, since OWL-Full is beyond the Abstract Description System framework. Whenever we mention OWL , we will implicitly refer to OWL-DL.
An E-Connection is a set of ``connected'' ontologies. An E-Connected ontology typically contains information about classes, properties and their instances, as in OWL, but also about a new kind of properties, called links, which are somewhat similar in spirit to datatype properties. In OWL, the classes defined in terms of datatype properties ``combine'' information from different domains: the actual application domain of the ontology and the domain of datatypes. The coupling between datatypes and the ontology is always achieved through restrictions on datatype properties. For example, a ``retired person'' can be defined in OWL as a person whose age is greater than 65, by using a class (``Person'') in the ontology and a restriction on a datatype property ``age'' with value ``greater than 65''. Both from a logical and from a modeling perspective, the domain of the ontology and the domain of datatypes are disjoint: from a modeling perspective the (application) domain of ``persons'' is disjoint from the (application) domain of ``numbers''; from a logical perspective, in OWL the domain where classes, properties and individuals in the ontology are interpreted is disjoint from the domain of datatypes, and datatype properties are interpreted as binary relations with the first element belonging to the domain of the ontology and the second on the domain of the datatypes.
In the same vein, link properties allow to create classes in a certain ontology based on information from a different ontology, provided that the domains of the ontologies are disjoint, both from a logical and a modeling perspective. For example, a ``Graduate Student'' in an ontology about ``people'' could be defined as a student who is enrolled in at least one graduate course, by using the class ``Student'' in the people ontology and a someValuesFrom restriction on the link property ``enrolledIn'' with value ``GraduateCourse'', which would be a class in a different ontology dealing with the domain of ``academic courses''. Link properties are logically interpreted as binary relations, where the first element belongs to the ``source'' ontology and the second to the ``target ontology'' of the link property. Conceptually, a link property will be defined and used in its ``source'' ontology. For example, the link property ``enrolledIn'' would be defined as a link property in the ``people'' ontology with target ontology ``academic courses''. An E-Connected ontology, in the Semantic Web context, can be roughly described as an OWL-DL ontology, extended with the ability to define link properties and construct new classes in terms of restrictions on them.
In this tutorial, we use ``E-Connection Language'' to denote a formalism, i.e. a logic; we will use ``E-Connection'' to denote a knowledge base written in such a language. These knowledge bases are composed of a set of ``connected'' ontologies, for which we will use the term ``E-Connected ontology'' or ``component ontology''.
From a modeling perspective, each of the component ontologies in an E-Connection is modeling a different application domain, while the E-Connection itself is modelling the union of all these domains. For example, an E-Connection could be used to model all the relevant information referred to a certain university, and each of its component ontologies could model, respectively, the domain of people involved in the university, the domain of schools and departments, the domain of courses, etc.
One advantage of OWL is the availability of tools that can reason on, at least, a large fragment of the language. Since reasoning support was an important requirement in the design of OWL, it also should be a key requirement for any extension of OWL. Reasoning is a strong motivation for introducing E-Connections as a formalism for combining OWL ontologies, since we show that is is possible to define practical reasoning algorithms for such combinations as an extension of existing OWL reasoners.
In order to illustrate the basic elements of an E-Connection, let us consider the following application domains, that we want to formalize: let D1 be the domain of ``travel accomodations", D2 the domain of ``leisure activities'', D3 the domain of ``travel destinations'', and D 4 the domain of ``people''. We want to use an E-Connection to model the union of these domains, i.e., the domain of ``tourism''.
We want to model each application domain in a different component of the E-Connection and then use link properties to talk about their relationships. As in OWL, each (component) ontology is written in a different file, and the vocabularies being used in each of them can be specified by a set of namespace declarations and entity definitions.
Each component ontology defines its own ontology header, and may include a collection of assertions about the ontology under an owl:Ontology tag. As in OWL, these tags may contain meta-data about the component ontologies, such as comments information about version control, and also owl:import statements. The rdf:about attribute provides a name (a URI) for each ontology. A given component ontology can import another ontology. Note that, although E-Connections can replace import statements in many situations, sometimes it makes more sense to import than to E-connect.
For our domains, we create the following root classes
(accomodations)
<owl:Class rdf:ID="Accomodation">
(activities)
<owl:Class rdf:ID="Activity">
(destinations)
<owl:Class rdf:ID="Destination">
(people)
<owl:Class rdf:ID="Person">
Where, in brackets, we specify the ontology each class has been defined in; we use this informal notation along this section for clarity and brevity, in order to avoid including the namespace and ontology headers of each ontology in the combination.
In SWOOP, we can create a new ontology with URI
http://www.mindswap.org/dav/ontologies/destinations,
by clicking on the ``New'' button. The following pop-up window
will show up:

Then, click the Add Class button and create the class
``Destination''. The result is shown in the next image:

In order to create the remaining component ontologies and their corresponding ``top'' atomic classes, repeat the process for each of them. As a result, all the ontologies (each containing a single atomic class), should be loaded in the SWOOP workspace

We would like to define classes like BudgetDestination (a
travel destination which provides a choice of budget accomodations), a
CaribbeanHotel (a hotel accomodation offered at a caribbean
destination), and a SportsDestination (a destination that
offers a
variety of activities related to sport). In order to attain this goal,
we define a set of link properties, i.e. properties that
relate elements of the different application domains. For example, the
links providesAccomodation and offersActivity relate
the domain of
``destinations'' to the domain of ``accomodations'' and
``activities'' respectively.
(destinations)
<owl:LinkProperty rdf:ID="providesAccomodation">(destinations)
<owl:foreignOntology rdf:resource="&accomodations;">
<rdfs:domain rdf:resource="#Destination"/>
<rdfs:range>
<owl:ForeignClass rdf:about="&accomodations;#Accomodation">
<owl:foreignOntology rdf:resource="&accomodations;"/>
</owl:ForeignClass>
</rdfs:range>
</owl:LinkProperty>
<owl:LinkProperty rdf:ID="offersActivity">
<owl:foreignOntology rdf:resource="&activities;">
<rdfs:domain rdf:resource="#Destination"/>
<rdfs:range>
<owl:ForeignClass rdf:about="&activities;#Activity">
<owl:foreignOntology rdf:resource="&activities;"/>
</owl:ForeignClass>
</rdfs:range>
</owl:LinkProperty>
A link property is a binary relation between instances of classes, which belong to different E-Connected ontologies. The source of a link property is the ontology in which it has been declared; the target is the ontology specified in the owl:foreignOntology tag in the declaration. The first element of the relation always belongs to an instance of a class in the source ontology. In the example, both ``providesAccomodation'' and ``offersActivity'' have been defined in the ``destinations'' ontology. The second element of the relation corresponds to an individual in the target ontology, i.e. the ``accomodations'' ontology in the case of ``providesAccomodation'' and the ``activities'' ontology in the case of ``offersActivity''.
The definition of a link property
must include a single owl:foreignOntology
tag. As in the case of object properties, link properties can be
assigned a domain and a range. For example, the link ``offersActivity''
relates instances of the class ``Destination'' to instances of the
class ``Activity''. The class specified as a range of a link property
must be declared as a class in the target ontology. In the
source ontology, such a class can be declared as ``foreign'' using the
owl:ForeignClass tag.
In SWOOP, we can define the link properties of the example above as
follows:
The result of these steps is shown in the following image:

Note that, in the example, the
``providesAccomodation'' property has a domain and a range, that we
need to add.
In order to do that, return to the ``destinations'' ontology and
click again on ``providesAccomodation''. Then:
The result of the process is shown
in the next image:

In order to add the range, click on Has
Range: Add
and select the ``Accomodation'' class
in the accomodations ontology. The result, after applying all the
changes, is shown in the following image

The blue icon shows that the ``Accomodation'' class is a foreign
class in the destinations
ontology. If you click on its URI, SWOOP will show the accomodations ontology. You will
notice that there the ``Accomodation'' class is represented by a yellow
icon, since the class is local to that ontology.
You can now repeat
the whole process for the ``offersActivity'' link.
Note that a link property can be defined as functional or inverseFunctional, with the obvious
meaning.
However, as opposed to object properties in OWL, a link property cannot
be tagged as transitive or symmetric.
Before continuing, it is worth mentioning that any entity in SWOOP,
including link properties, can be displayed and edited using a renderer
other than the Concise Format renderer. For example, if after
completing the above steps you click on the ``abstract syntax'' and
``RDF/XML'' tags, you will see the abstract syntax and the RDF/XML
definition of the entity respectively.
Restrictions on link properties can be used to generate new classes in each of the component ontologies, in the same way as OWL provides the ability to define restrictions on datatype properties. For example, we can define a ``budget destination'' as a travel destination that offers at least one kind of budget accomodation:
(destinations)
<owl:Class rdf:ID="BudgetDestination">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Destination">
<owl:Restriction >
<owl:onProperty rdf:resource="#providesAccomodation"/>
<owl:someValuesFrom >
<owl:ForeignClass rdf:about="&accomodation;BudgetAccomodation" > <
<owl:foreignOntology rdf:resource="&accomodation;"/>
</owl:ForeignClass >
</owl:someValuesFrom >
</owl:Restriction >
</owl:intersectionOf>
</owl:Class>
In SWOOP the class ``budget destination'' is created as follows:
The result is shown in the following image:

Usign an ``allValuesFrom'' restriction we can define a ``fanatic cinema lover'' as a person that only enjoys leisure activities related to cinema:
(people)
<owl:Class rdf:ID="FanaticCinemaLover">
<rdfs:subClassOf>
<owl:Class rdf:about="#Person"/>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#likesActivity"/>
<owl:allValuesFrom>
<owl:ForeignClass rdf:about="&activities;CinemaActivity">
<owl:foreignOntology rdf:resource="&activities;"/>
</owl:ForeignClass>
</owl:allValuesFrom>
</owl:Restriction>
</rdfs:subclassOf>
</owl:Class>d
Where in the ``activities'' ontology we would define the class
``CinemaActivity'' as a subclass of activity:
(activities)
<owl:Class rdf:ID="CinemaActivity">
<rdfs:subClassOf>
<owl:Class rdf:about="#Activity"/>
</rdfs:subClassOf>
</owl:Class>
In SWOOP theses classes can be created using a similar
sequence of steps as in the case of the class ``BudgetDestination'':
The result is shown in the following image:

Cardinality restrictions on links allow to constrain the number of
objects linked by the connecting relations. For instance, we can define
a ``SportsDestination'' as a travel destination that offers more than
10
different sports activities:
(destinations)
<owl:Class rdf:ID = "SportsDestination">
<rdfs:subClassOf>
<owl:Class rdf:about="#Destination"/>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource = "offersSportActivity"/>
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">10
</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
In order to create this class in SWOOP:

The ``hasValue'' restriction on link allows to specify classes in an
E-Connected ontology based on the existence of a particular
individual in a different ontology. For example, we can define the
class ``Surfing destination'' as a travel destination that offers
``surfing'' as one of their activities, where ``surfing'' is an
instance of the class ``SportsActivity''
(destinations)
<owl:Class rdf:ID = "SurfingDestination">
<rdfs:subClassOf>
<owl:Class rdf:about="#Destination"/>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource = "offersSportActivity"/>
<owl:hasValue>
<owl:ForeignIndividual rdf:about="&activities;surfing">
<owl:foreignOntology rdf:resource="&activities;"/>
</owl:ForeignIndividual>
</owl:hasValue>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
Where in the ``activities'' ontology ``surfing'' is defined to be
an individual
(activities)
<owl:Thing rdf:ID="surfing"/>
In order to create the ``SurfingDestination'' class in SWOOP:

Analogously to Object and Datatype properties in OWL, it is
possible to add special features to the definition of link properties.
(activities)
<owl:Class rdf:ID="WaterSport">
<rdfs:subClassOf>
<owl:Class rdf:about="#Sport"/>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#isOfferedAt"/>
<owl:someValuesFrom>
<owl:ForeignClass rdf:about="&destinations;BeachDestination">
<owl:foreignOntology rdf:resource="&destinations;"/>
</owl:ForeignClass>
</owl:someValuesFrom>
</owl:Restriction>
</rdfs:subclassOf>
</owl:Class>
(activities)
<owl:LinkProperty rdf:ID="isOfferedAt">
<owl:foreignOntology rdf:resource="&destinations;"/>
<owl:inverseOf rdf:resource="&destinations;offersActivity"/>
</owl:LinkProperty>
Where ``isofferedAt'' is a link property is defined as the
inverse of ``offersActivity'' .
In SWOOP:

After defining the class ``WaterSportActivity'' we obtain the
following in SWOOP:

A link may be defined as a sub-property of another link. For example, we can define the link ``offersSportActivity'' as a sub-property of ``offersActivity'':
(destinations)
<owl:LinkProperty rdf:ID="offersSportActivity">
<owl:foreignOntology rdf:resource="&activities;"/>
<rdfs:subPropertyOf rdf:about="#offersActivity"/>
</owl:LinkProperty>
In SWOOP:

Obviously, a link cannot be declared as a sub-property of an object or datatype property; on the other hand, if a link is declared as a sub-property of a link with a different foreign ontology, the E-Connected knowledge base would be unsatisfiable, due to the semantics of the links and the disjointness of domains.
(destinations)
<rdf:Description rdf:about="#SaintThomasIsland">
<rdf:type>
<owl:Class rdf:about="#CaribbeanDestination"/>
</rdf:type>
<offersActivity>
<owl:ForeignIndividual rdf:about="&activities;#surfing">
<owl:foreignOntology rdf:resource="&activities;"/>
</owl:ForeignIndividual>
</offersActivity>
</rdf:Description>
In SWOOP:

The E-Connections framework imposes some restrictions to axioms and
facts. For example, a class shouldn't be declared in an ontology as a
subclass of a class declared in a foreign ontology in the combination.
An ontology containing such an axiom would be unsatisfiable, since the
domains in which those classes are interpreted are disjoint, and hence
the classes wouldn't share any instance.
For similar reasons, a property (object, datatype or link) shouldn't
be declared as sub-relation of a property in a foreign ontology; an
individual cannot be declared as an instance of a foreign class, and a
pair of individuals cannot instantiate a foreign property.
The E-Connections framework imposes some restrictions in the use of
URIs. In OWL-DL, a URI cannot be used, for example, both as a class and
a datatype, or as an object property and a datatype property. In an
E-Connected ontology, a set of additional restrictions must be imposed,
namely a URI cannot be used ``locally'' in two different component
ontologies
An E-Connection is a set of E-Connected ontologies. However, this definition can be ambiguous, since it may not be apparent at first sight to which set we are referring to.
For example, let us consider again the ``tourism'' domain. At first
sight, one would say that we have a single E-Connection, namely, the
one composed by the ontologies:
destinations, activities,
accomodations, people. However, this is not
strictly correct.
Suppose that the ``people'' ontology contains an explicit contradiction. Assume we load the ``accomodations'' ontology in a reasoner and try to check its consistency; what should the reasoner do? The ``accomodations'' ontology contains no link property declarations, i.e., it is an ``ordinary'' OWL ontology. In this case, an E-Connections aware reasoner should only check the consistency of that ontology, and ignore the rest, i.e., it shouldn't report the inconsistency in the ``people'' ontology.
Given an E-Connected ontology, a reasoner should consider only all the E-Connected ontologies
in its transitive closureunder link references. For example, the
``destinations'' ontology defines a link property providesAccomodation to the
``accomodations'' ontology and a link
offersActivity to the ``activities'' ontology. Since
``accomodations'' does not contain any link property (it is an ordinary
OWL ontology) and ``activities'' only includes the link isOfferedAt to ``destinations''
again, the reasoner would consider the following set of E-Connected
ontologies:
K destinations = {destinations, accomodations, activities}
We say that K Destinations is the E-Connection induced by the destinations ontology. Also:
K accomodations = { accomodations}
K activities = {activities, destinations, accomodations}
K people = {people, destinations, accomodations,
activities}
An OWL ontology O can be seen as an E-Connected ontology which
induces an E-Connection with O as its only component. In our example,
if you select the
accomodation ontology in the
SWOOP workspace you will notice that the right pane now displays
information about the ontology:

Now, click on the activities ontology, click on
the ``Species Validation'' tab and turn Pellet on. On the right pane,
the expressivity of the Econnection is shown:

In brackets the expressivity of each of the component ontologies is
shown. In this case, the E-Connection is composed of the following
ontologies:
K activities = {activities, destinations, accomodations}
All of them are written in the Description Logic ALC.
After the closing bracket, SWOOP displays the expressivity used in the
links. In this case, inverses, number restrictions on link properties
and link hierarchies are defined.
If you click on the people ontology, then the following is displayed:

Now, the Econnection is composed of four ontologies, instead of 3.