OWLlink:
Structural Specification

Working Draft October 2008

This version:
http://www.owllink.org/owllink-20081001/
Latest version:
http://www.owllink.org/owllink/
Previous version:
http://dig.cs.manchester.ac.uk/
Authors:
Thorsten Liebig, Ulm University
Marko Luther, DOCOMO Euro-Labs Munich
Olaf Noppens, Ulm University
Contributors:
Sean Bechhofer, The University of Manchester
Matthew Horridge, The University of Manchester
Ralf Möller, Hamburg University of Technology
Boris Motik, Oxford University
Peter F. Patel-Schneider, Bell Labs Research, Alcatel-Lucent
Dmitry Tsarkov, The University of Manchester
Anni-Yasmin Turhan, TU Dresden
Timo Weithöner, Ulm University

Abstract

The OWLlink interface provides an implementation-neutral mechanism for accessing OWL reasoner functionality. OWLlink is a refinement of the DIG protocol most notably with respect to query and language expressivity. It has been renamed to OWLlink since it relies on OWL 2 for the primitives of the modelling language, and is thus fully compatible with OWL. The set of OWLlink core primitives described in this document cover basic reasoner management, assertion of axioms and elementary ask functionality. An extension mechanism is provided in order to easily add any required functionality in a controlled way to the core language. This document defines the OWLlink core interface by providing a structural specification. A concrete binding into [HTTP/1.1] and [XML Schema] is given in an accompanying document [OWLlink HTTP/XML Binding].

Status of this Document

May Be Superseded

This version of the OWLlink structural specification refers to the public OWL 2 working draft as of April 11th 2008 (http://www.w3.org/TR/2008/WD-owl2-syntax-20080411/) and will soon be superseded by an updated specification in order to align with the latest OWL 2 working draft or recommendation.

This document is being published as one of a set of 3 documents:

  1. Structural Specification (this document)
  2. HTTP/XML Binding [OWLlink HTTP/XML Binding]
  3. Primer

Please Comment

The OWLlink Working Group seeks public feedback on these Working Drafts. Please send your comments to public-comments@owllink.org or post to the public discussion forum at http://www.owllink.org/forum/.


Contents


1 Introduction

OWLlink provides a declarative interface to OWL reasoners. It is intended to be a lightweight mechanism giving client applications access to reasoning functionality provided by a server. The OWLlink core defines primitives for handling and manipulation of OWL Knowledge Bases (KBs), such as asserting axioms, as well as primitives for asking questions about KB entities. Each KB given to the reasoner is a self-contained collection of facts and axioms.

This document specifies the latest version of the OWLlink interface. The specification draws on experiences gained from its predecessor DIG. The initial [DIG 1.0] specification of 2002 was designed by the DL Implementation Group (DIG), a self-selecting assembly of researchers and developers associated with implementations of DL systems. The shortly following version [DIG 1.1] of 2003 was quickly adopted by numerous reasoning engines, ontology editors and other applications. Despite its success there remained several shortcomings, such as limitations in the supported language fragment, a lack of elementary queries, and no mechanism to extend the protocol [DIG 1.1 Experience]. Most of the identified issues were fixed in the draft specification of [DIG 2.0], introduced in 2006 [DIG 2.0 OWLED'06], by adding the requested features and lifting the concept language to that of [OWL 2]. Finally, [DIG 2.0] has been renamed into OWLlink in 2008 [OWLlink OWLED'08] to reflect the important shift from its DL roots to the XML-based cousin OWL and the lack of backwards compatibility to DIG.

Since syntax and semantic of the OWLlink language primitives are based on OWL 2, the effort to support the core protocol with respect to parsing is reduced. Consequently, OWLlink inherits all of its underlying language concepts such as punning and the OWL 2 notion of structural equivalence. However, it does not support any parts of OWL 2 beyond the level of axioms. In particular, it does not support imports and the notion of an ontology. Client applications have to resolve any issues related to the handling of imports before passing a KB to an OWLlink server. Under this view, the OWLlink interface is by far more abstract in terms of implementation languages and internal representation models than frameworks that provide access to data structures representing OWL ontologies such as the Java specific OWL API. Furthermore, the OWLlink specification does not address issues such as stateful connections, transactions, authentication, encryption, compression, concurrency, multiple clients and so on. Yet some features (such as authentication, encryption and compression) might be transparently provided by the access protocol (eg., [HTTP/1.1]) underlying a concrete OWLlink binding.

We introduce the structural specification of the OWLlink core using class diagrams expressed in the Unified Modeling Language (UML). Such a style of specification allows for a specification of the OWLlink primitives at a conceptual level. The conceptual aspects of the primitives, such as the types of arguments and the semantics, are thus decoupled from a concrete protocol and syntax used to actually access OWLlink implementations. Hence, the same primitives can be realized using different access protocols. The accompanying [OWLlink HTTP/XML Binding] document describes a concrete binding in [HTTP/1.1] and [XML Schema]. However, access protocols using Web services or other remote procedure call mechanisms could be provided in the future.

2 Preliminaries

The OWLlink interface makes a number of assumptions:

OWLlink relies on the [OWL 2 Specification] for the language used to express Knowledge Base axioms. OWL 2 has also been specified using UML, so OWLlink simply reuses many UML classes provided by OWL 2. The UML notation used in this document is restricted to a very limited subset of UML class diagram notation. The names of abstract classes are written in italic. The names of all OWL 2 UML concepts are prefixed with ox. to emphasize that they are not defined in this specification. We briefly recapitulate the most important classes of OWL 2 with respect to this OWLlink specification:

OWLlink inherits the notion of structural equivalence of OWL 2. An OWLlink server has to to accept sets containing repetitions of structurally equivalent axioms without raising an error, but is free to provide a warning in this case.

Another feature of OWLlink shared with OWL 2 is its use of what is generally called "punning". The basic idea is that each name in an OWLlink Knowledge Base can be used as the name of any or all of a datatype property, an object property, a class, a datatype, and an individual at the same time. However, all five of these uses are completely independent. Punning in OWL 2 and OWLlink Knowledge Bases eliminates the need for introducing different names for different entity types. In fact, the structure of OWL 2 axioms has been chosen in a way that any construct that use names provides enough context to unambiguously identify the type of an entity the name refers to.

The semantics of the OWLlink core asks is given (if not obvious) on the basis of the OWL 2 model-theoretic semantics [OWL 2 Semantics]. More precisely, OWLlink adopts the notion of a vocabulary for its KBs being a 6-tuple V = ( NC , NPo , NPd , NI , ND , NV ) and an interpretation I where

3 Basic Protocol

OWLlink is a client-server protocol. It is specified in two parts: the first part defines the abstract protocol, and the second part defines the binding of the protocol into a concrete transport mechanism. While the abstract protocol is defined in this specification document, its binding to [HTTP/1.1] and [XML Schema] is given in an accompanying document [OWLlink HTTP/XML Binding].

This document uses UML class diagrams to specify the abstract protocol. Thereby all following diagrams depict both, the OWLlink request and their corresponding response message. In case of bundling multiple requests with different responses within one diagram, the accompanying text describes which response belongs to which request.

3.1 Sessions and Messages

Before sending a request to an OWLlink server, a client must establish an OWLlink session to the server that abstracts the actual bidirectional communication channel between the client and the server. The actual implementation of a session provides primitives to transport requests and responses and is defined by the transport mechanism used to access an OWLlink server.

OWLlink servers are allowed to service several clients concurrently. However, interaction within one OWLlink session is not concurrent. An OWLlink session is assumed to transport requests and responses sequentially. Each request should be processed by the OWLlink server such that the results are the same as if the requests were processed sequentially in the order they were dispatched. Furthermore, the server must send the responses to the client in exactly the same order in which the requests arrived. OWLlink does not prescribe how concurrent requests issued through different OWLlink sessions are to be handled. Servers are free to provide their own mechanisms for isolating interaction between different OWLlink sessions.

An OWLlink session can be terminated by the client or the server. Furthermore, due to environmental circumstances (e.g., network problems or timeouts), an OWLlink session can be broken asynchronously. Regardless of the cause, all requests issued on an OWLlink session that were not completed when the OWLlink session was terminated must be made invalid. The exact meaning of this is not precisely specified. An OWLlink server can, but is not required to, implement a transaction mechanism for rolling back not completed requests. If a client establishes a different OWLlink session, an OWLlink server should not send any responses for the invalid requests: each response can be transmitted only through the OWLlink session through which the request was initiated.

Protocol Objects
Figure 1. Protocol Objects

The basic interaction pattern of OWLlink is that of request-response. The fundamental objects used in the protocol are presented in Figure 1.

Each request is paired with exactly one response. Depending on the transport mechanism, it might be inefficient to send individual requests to an OWLlink server at a time. Therefore, OWLlink allows to bundle requests into messages. As shown in Figure 1, a RequestMessage object encapsulates a list of Request objects, whereas a ResponseMessage object encapsulates a list of Response objects.

Each request message must correspond to exactly one response message. The response message must contain the responses to all the requests from the request message, and all responses must be listed in the response in the order matching with the order of the corresponding requests. The responses must be the same as if the requests were executed sequentially in the order specified in the request message. Note that an OWLlink server is free to execute the requests in any way it wishes, as long as the requests are seemingly executed sequentially. For example, if a request to update the Knowledge Base is followed by a query request, the responses to the query must take the updates into account.

3.2 Confirmation and Error Handling

Each request in OWLlink must be accompanied by a corresponding response (cf. Figure 1). Request primitives that address a specific Knowledge Base are subclasses of the abstract KBRequest class and the corresponding confirmations are subclasses of the abstract KBResponse class. If a request has been processed successful, the type of the response returned depends on the request and may contain additional data. If a request does not produce any specific data, the OWLlink server should still return a Confirmation response to the client. For example, if a request to write axioms into a Knowledge Base succeeds, only a confirmation response is returned indicating that all axioms were added successfully.

A Confirmation (or any sub-type thereof) may contain a warning. For example, an OWLlink server may accept sets containing repetitions of objects without raising a warning. However, it may be useful to warn the user if this has happened, as this may indicate a spelling or typographical mistake.

If a request cannot be executed, the OWLlink server should return an Error response to the OWLlink client containing a message specifying the cause for failure. Specific error classes are defined to report syntactic violations (SyntaxError), semantic problems (SemanticError) and problems regarding the management of a Knowledge Base (KBError).

If a server cannot process a request, it should attempt to recover gracefully, and process other pending requests as if the error did not happen. If, however, this recovery is not possible the server should close the OWLlink session after sending the Error response. The state of the server after such an action is not prescribed by this specification.

This specification does not require requests that modify a Knowledge Base to execute atomically. For example, a request for adding axioms to a Knowledge Base might fail after several axioms have been already added. In this case, the OWLlink server is not required to roll back the already processed axioms — the behavior of the server is implementation-specific. Nevertheless, OWLlink implementors are encouraged to ensure that requests which modify a Knowledge Base are executed atomically.

3.3 Identification and Status

All OWLlink servers must support the GetDescription request, shown in Figure 2, to allow clients to discover its identity and introspect its capabilities. The response to this request is a Description, providing information about the servers current state, including: the name of the OWLlink server, its version, an optional identification message, the OWLlink protocol version, the currently managed public and named KBs (see Section 3.4), the supported OWLlink extensions (see Section 3.5), and a set of configurations. In this way, each OWLlink client can introspect the current status and the capabilities of an OWLlink server. The OWLlink protocol version as of this specification is "1.0" (major.minor and no build).

OWLlink server management
Figure 2. Server Description

A configuration is either and property or a setting. While properties are read-only, settings (such as optimizations to be used during reasoning) can be set via Set to values of the associated types by a client for a specific KB (see Section 3.4). Each configuration item in a Description is associated with its values and its type. Values are transported in String constants and the set of possible types is restricted to simple types (at least the types Boolean and String have to be supported by any implementation), enumeration types and homogeneous lists of such types. Note that the settings given in a Description are the default values that hold for newly created KBs. The actual settings that hold for a KB can be retrieved via a Settings request (cf. Section 3.4). As settings can be modified per KB at any time via Set requests, the default settings reported in a Description might differ from the actual settings retrieved by Settings.

While OWLlink defines the general format of configurations, it does not provide specific details on available configurations — these will be defined on a per-server basis. However, the following configurations have to be supported by any OWLlink server.

3.4 Knowledge Base Management

OWLlink servers can manage more than one KB simultaneously. Each OWLlink KB is identified with a unique URI on creation. These URIs provide a handle that identifies the particular incarnation of the KB in the particular server. Most OWLlink requests are derived from the KBRequest class, which requires a kb parameter identifying the KB to which the request applies. If a KB with the given URI cannot be found, the server should return a KBError object.

CreateKB
Figure 3. Knowledge Base Allocation

A new KB is allocated within the OWLlink server by sending a CreateKB request (cf. Figure 3). If the optional argument kb of type URI is given, the new KB is allocated with this URI, otherwise a new (server-generated) URI is used. On successful creation of the new KB, a KB object containing the URI that identifies the allocated KB is returned. However, if the given URI is already in use by another KB allocated before or the KB could not be allocated for some other reasons (e.g., a low memory condition), the response to the CreateKB request is a KBError. Freshly allocated KBs are initially empty, not containing any fact or axiom. Note that the only way to produce an empty KB (without using advanced features like retraction of course) is through a CreateKB request. The optional name argument of a CreateKB request allows to associate a name with a KB on creation. Such KB names do not have to be unique and thus cannot be used to identify a certain KB. However, named KBs are published together with their identifying KB URI in the servers Description object and thus can be accessed from multiple clients.

The use of unique URIs allows to sidestep some of the issues relating to multiple clients. If a client chooses not to share a KB URI with another client (either directly or by making it public through passing a name on creation), then the client can be sure that it is the only one interacting with that KB. This is not entirely the case, as a malicious client could choose to try sending messages with random URIs to a running OWLlink server. There is a (very small) chance that such a client could get lucky and hit on a URI which is in use, but this potential situation is unlikely enough not to be concerned with it.

Different clients of the same server, like KB browsers or explanation tools, however, may want to share KBs by sharing URIs or making KBs public through naming — it is then the clients' responsibility to manage and coordinate this sharing.
The possibility to pass an identifying URI along with a CreateKB request, allows OWLlink KBs to stand alone — a situation that is useful, say for test suites and benchmarking.

GetSettings
Figure 4. Knowledge Base Settings

The actual settings of a KBs options can be retrieved by sending a GetSettings request (see Figure 4). The Settings response does not need to be equal to the corresponding section within the Description object, as the value of an option may at any time be modified using a Set request (see Figure 5). The response to a successful Set request is an OK object indicating that the value of the corresponding option has been set to the given value within the server. At any time, the value reported by a Settings object for an option has to correspond to the value of the previous successful Set request for that option, or, in case no such request was ever issued, the default value for that option as reported in the Description object. Note that a server might at any time decide to refuse a Set request. For example, a server might support the change of certain options only if the corresponding KB is still empty. In that case, or if the addressed option is not supported or the value does conflict with the options type annotation, it has to return a corresponding Error object without modifying the value of the option.

CreateKB
Figure 5. Knowledge Base Configuration and Release

It is good practice for clients to release a KB once it is not in use any more, as this allows the OWLlink server to free the resources allocated for the KB. This can be done using the ReleaseKB request (see Figure 5), to which the server should respond on success with the OK response and otherwise with a KBError. Once a KB has been released, any further requests using its URI result in a KBError.

3.5 Extensions

Different reasoners support different languages as well as different reasoning facilities. To support these differences, OWLlink is extensible. Current candidates for extensions are:

An OWLlink extension consists of a set of documents,

All documents must be available on the web, and their URIs must adopt the given naming schema for bindings. For instance, the specification of the retraction extension can be found at http://www.owllink.org/ext/retraction/ and its corresponding HTTP/XML binding is described at http://www.owllink.org/ext/retraction-httpxml/ (whereas the XML schema for the latter is at http://www.owllink.org/ext/retraction-xml.xsd). An OWLlink server reports the set of extensions supported for the binding used by a GetDescription request as part of the resulting Description object (cf. Figure 2) by listing their URIs without extension.

OWLlink implementors are free to extend the set of supported OWLlink primitives. This can be simply done by providing adequate subclasses of Request and Response with appropriate parameters. Since RequestMessage and ResponseMessage objects contain lists of Request and Response objects, respectively, such proprietary extensions can readily be passed in messages.

The extension mechanism should not be used for either overloading core OWLlink statements with additional information or altering their semantics.

4 Tells

Figure 6 shows the primitive for adding content to a KB via OWLlink. Since OWLlink 2 relies on the concept language of OWL 2 for expressing content, it basically refers to the OWL 2 axioms. More precisely, the Tell request adds a set of OWL 2 axioms to the specified KB. Analogous to the definition of an ontology in OWL 2 an OWLlink KB is defined by a set of unordered axioms without repetitions in the sense of structural equivalence. An OWLlink server must not return an error in case a structurally equivalent axiom is submitted a second time but is free to provide a warning. It should, however, keep only one copy of the structurally equivalent axiom. If a server states to ignore annotations it also has to take this into account when checking for structural equivalence, i.e. has to filter annotations at all levels of the tell language beforehand.
If all axioms are successfully added to the KB, the server should respond with a Ok response.

Structure of KB tells
Figure 6. Primitive for Adding Axioms to a KB

A request may contain a mixture of arbitrary management, tell, and ask requests. This allows, for example, to create self-containing test cases for OWLlink servers. For instance, one single request may include the creation of a KB (with a user given URI) followed by a tell, an ask, more tells, and further asks.

5 Asks

The OWLlink core includes a set of general requests for retrieving information about KB entities as well as entailed facts. These so called basic asks only cover very common queries. They extend the query interface of [DIG 1.1] with requests needed to be more aligned with OWL 2 or which have been missed by user of previous DIG releases (e.g. see [DIG 1.1 Experience]). More complex queries are delegated to query extensions such as the query language extension [OWLlink Query Extension]. Furthermore, syntactical information about previously transfered axioms can be retrieved by the optional told axiom extension [OWLlink Told Retrieval].

5.1 Retrieving KB Entities

Each particular request depicted in Figure 7 returns a set of all corresponding named OWL 2 entities of the referenced KB. That is a possibly empty SetOfXXX consisting of ox.XXX where XXX is one of OWLClass, ObjectProperty, DataProperty, Datatype, Individual, or AnnotationProperty. Note that semantically equivalent entities are not grouped or marked as such.
Note that GetAllIndividuals return the set of all named individuals (ground facts). The SetOfDatatypes response has to consist of all built-in and user defined datatypes which are actually referenced within the axioms of the KB.

Basic asks for retrieving KB entities
Figure 7. Basic Asks for Retrieving KB Entities

In case an OWLlink server ignores all annotation axioms it must not return annotation properties as well as classes, properties, etc. which only occur in annotation axioms. Furthermore, if a server ignores declarations, all declared entities will not be part of the responses unless they are referenced elsewhere. On the other hand, when considering declarations the responses have to account for declared entities in all responses.

5.2 Checking KB Status

Asks for querying KB status
Figure 8. Request for Checking KB Status

Figure 8 shows the KB status requests. IsKBSatisfiable returns true if the KB has at least one interpretation I which is a model for all axioms of the KB. Note that according to the OWL 2 semantics [OWL 2 Semantics] annotations have no semantic influence. Therefore, conflicting statements within annotations are without any consequences to the KB status requests.

IsKBStructurallyConsistent returns true if the Knowledge Base is structurally consistent according to the definition from [OWL 2 Semantics]. Note that if a server ignores declarations the IsKBStructurallyConsistent query is useless and has to respond with an error.

The GetKBLanguage query returns a string representation of the internal, reasoner-specific language fragment of the KB. Note that due to potential optimization techniques or other processing steps this fragment may be different to the pure syntactical language characterization as well as may change over time (e.g. after adding/retracting axioms or reasoning).

5.3 Queries about Classes and Properties

5.3.1 Querying Classes

The basic asks of Figure 9 about one or more classes all return a boolean value and cover requests such as class subsumption, class satisfiability, class equivalence, and class disjointness.

Asks refering to semantic relationships between classes
Figure 9. Basic Asks Referring to Classes

In terms of the model theoretic semantics of OWL 2 [
OWL 2 Semantics] a class description C is satisfiable with respect to a KB if there exists a model I of the KB such that CIc is not empty. Furthermore, a set of n class descriptions Cn is said to be equivalent to each other with respect to the KB if CiIc = CjIc for all 1 ≤ i, jn in every model I of the KB. In contrast such a set of class descriptions are pair-wise disjoint if CiIcCjIc = ∅ for all 1 ≤ i, jn with ij in every model I of the KB. Eventually, a class description C is subsumed by D if CIcDIc in all models of the KB.

The basic class queries GetSubClasses and GetSuperClasses of Figure 10 return the (direct) sub- resp. super-classes of a given class description. The sub-classes of a OWL class description D are the named class entities (class descriptions of type ox.OWLClass) A for which AIcDIc (resp. ⊇ for super-classes) in all models of the KB. In case of direct is set to true then these queries only return the direct sub- resp. super-classes with the further constraint that there is no distinct B with BIcDIc and AIcBIc.

Queries to classes wrt. the subsumption realationship
Figure 10. Basic Queries wrt. Subsumption between Classes

Both queries return a set of class synonym sets. The synonym sets embrace those classes which are equivalent to each other.

Queries refering to the class hierarchy
Figure 11. Basic Queries Referring to Equivalent Classes and the Class Hierarchy

The equivalent classes of a OWL class description can be retrieved with help of the GetEquivalentClasses query of Figure 11. This query returns a (potentially empty) set of other class names An (SetOfClasses response) which are equivalent to the given description C (see left hand side of Fig. 11), that is AkIc = CIc for 1 ≤ kn.

5.3.2 Retrieving the Class Hierarchy

The complete class hierarchy can be retrieved utilizing a single request, namely GetSubClassHierarchy. This request has an optional argument which is a class name (see Figure 11). Without giving a class name this query returns all super-/sub-class pairs of the KB, whereas the first element consists of a synset of classes and the second of a set of sub-class synsets (ClassHierarchy response). The latter set may be an empty set in case the super class has no sub classes other than the unsatisfiable class. There is no order of class-subclass pairs within the response. The two predefined OWL class entities owl:Nothing and owl:Thing are not considered in the class sub-class pairs of this response (unless there is a class which is equivalent to them) . This is because of two reasons: (1) to have analogous responses in comparison to the property hierarchy requests (where comparable predefined entities do not exist) (2) to minimize the number of pairs to be transfered (by ruling out redundant pairs). Therefore, when retrieving the initial hierarchy of a just created KB the response will contain no class sub-class pair.
See the following examples use square brackets "[]" for ClassSubClassPairs, curly brackets "{}" for SetOfSubClassSynsets and round brackets "()" for ClassSynsets. The respective responses to the GetSubClassHierarchy query, namely ClassHierarchy are enclosed with angle brackets "⟨⟩":

KB (OWL 2 functional syntax) GetSubClassHierarchy() response
⟨⟩
SubClassOf(A owl:Thing) ⟨[(A) {}]⟩
SubClassOf(A owl:Thing)
SubClassOf(B A)
⟨[(A) {(B)}]⟩
EquivalentClasses(A owl:Thing)
EquivalentClasses(C owl:Nothing)
SubClassOf(B owl:Thing)
⟨[(A owl:Thing) {(B)}]   [(B) {(C owl:Nothing)}]⟩

KB (OWL 2 functional syntax) GetSubClassHierarchy() response
⟨[(owl:Thing) {}]   [(owl:Nothing) {}]⟩
SubClassOf(A owl:Thing) ⟨[(owl:Thing) {(A)}]   [(owl:Nothing) {}]⟩
SubClassOf(A owl:Thing)
SubClassOf(B A)
⟨[(owl:Thing) {(A)}]   [(A) {(B)}]   [(owl:Nothing) {}]⟩
EquivalentClasses(A owl:Thing)
EquivalentClasses(C owl:Nothing)
SubClassOf(B owl:Thing)
⟨[(A owl:Thing) {(B)}]   [C owl:Nothing) {}]⟩

When providing a class name as argument to GetSubClassHierarchy a fraction of the hierarchy will be returned starting with the supplied class as root.

5.3.3 Querying Object Properties

Likewise to the class asks above there are analog asks about object properties as shown in Figure 12.

Asks refering to ObjectProperties
Figure 12. Basic Asks Referring to Object Properties

Furthermore, the IsObjectPropertyXXX checks for the various characteristics an object property can have. Here XXX can be one of Functional, InverseFunctional, Reflexive, Irreflexive, Symmetric, Asymmetric, or Transitive.

Queries to ObjectProperties
Figure 13. Basic Queries to Object Properties

Queries about sub- as well as super-object properties are given in Figure 13. The answers to these queries are sets of object property synsets. Likewise to the corresponding class queries these queries also have a direct flag in order to retrieve all or only the direct sub- resp. super-object properties.

Asks refering to the ObjectProperties
Figure 14. Basic Asks Referring to Equivalent, Unsatisfiable, and Disjoint Object Properties

The request for retrieving equivalent (GetEquivalentObjectProperties) and unsatisfiable object properties (GetUnsatisfiableObjectProperties) and the object property hierarchy are shown in Figure 14. Their respective response is a set of object properties (SetOfObjectProperties response).
The result set of the GetDisjointObjectProperties query in Figure 15 is a set of object property synsets (SetOfObjectPropertySynsets).

The object property hierarchy can be retrieved with GetSubObjectPropertyHierarchy (Figure 15). It is analogical to the corresponding class query and returns pairs consisting of object property synsets and their corresponding set of sub-object property synsets. Note that since there is no predefined unsatisfiable (as well as universal) property in OWL 2 this reveals no information about unsatisfiable object properties.

Asks refering to the ObjectProperty hierarchy
Figure 15. Query for Retrieving the Object Property Hierarchy.

5.3.4 Querying Data Properties

Essentially the same queries as for object properties are provided for data properties. There is one exception with respect to the characteristics of data properties which are limited to IsDataPropertyFunctional as can be seen in Figure 16.

Asks refering to DataProperties
Figure 16. Basic Asks Referring to Data Properties

The queries for retrieving all as well as only direct sub- and super-data properties are depicted in Figure 17.

Queries to DataProperties
Figure 17. Basic Queries to Data Properties

Requests for querying important data property relationships are given in Figure 18. The result set to GetEquivalentDataProperties return a set of equivalent other data properties. With help of GetUnsatisfiableDataProperties one can retrieve the set of non-satisfiable data properties. GetDisjointDataProperties returns a set of data property synsets which are disjoint to the given one.

Asks refering to the DataProperties
Figure 18. Basic Asks Referring to Equivalent, Unsatisfiable, and Disjoint Data Properties.

Likewise to the object property hierarchy, GetSubDataPropertyHierachy (Figure 19) responds with pairs of super- and sub-data properties.

Asks refering to the DataProperty hierarchy
Figure 19. Query for Retrieving the Data Property Hierarchy.

5.4. Queries about Facts

The following queries refer to ground facts. This means that they are only sensitive to named individuals of the underlying KB. For instance, retrieving the fillers of an object property r with respect to an individual i (see GetObjectPropertyFillers in Figure 27) given a KB containing solely the axiom ClassAssertion(i MinCardinality(1 r)) will return the empty set since there is no named individual in the KB which satisfies the query condition.

5.4.1 Queries about Individuals

AreIndividualsEquivalent respectively AreIndividualsDisjoint returns true in case a set of provided individuals are all the same or all different from each other. More precisely, for n individuals an AreIndividualsEquivalent returns true if ajIi = akIi with 1 ≤ j, kn for every model I of the KB. The contrary case (AreIndividualsDisjoint) returns true if ajIiakIi with 1 ≤ j, kn and jk. In case an OWLlink server has the UNA enabled AreIndividualsEquivalent always returns false and AreIndividualsDisjoint always true when asked with different identifiers.

Whether an individual is an instance of a class description can be checked with help of IsInstanceOf. For an individual a and a description C this query returns true in case aIiCIc holds in every model I of the KB.

Asks about individuals
Figure 20. Basic Asks wrt. Individuals

In order to retrieve the classes an individual is an instance of GetTypes can be used as depicted in Figure 21. For an individual a it returns all synonym sets of named classes A where aIiAIc in all models I of the KB. When setting the direct flag to true the query returns only the most specific class synonym sets of the previous answer, namely those where there is no B with aIiBIc where BIcAIc.

The flattened variant GetFlattenTypes rules out any information about class equivalence from the response by simply returning a set of classes.

Asks about individuals
Figure 21. Basic Query wrt. Individual Instantiation

Figure 22 show the the GetDisjointIndividuals query which answers with a set of synsets containing all those individuals bn for a given a with aIibjIi where 1 ≤ jn.

Asks about disjoint individuals
Figure 22. Retrieving Disjoint Individuals

The equivalent individuals to an individual are returned as result to the query GetEquivalentIndividuals (Figure 23) which answers with a potentially empty set of equivalent individuals to a, namely all bn with aIi = bjIi where 1 ≤ jn. This query as well as the flattened variant for retrieving disjoint individuals (GetFlattenDisjointIndividuals) also returns a set of individuals.

Asks about equivalent individuals
Figure 23. Retrieving Equivalent Individuals

5.4.2 Queries about Properties related to Individuals

To retrieve the object properties originating from a source individual or pointing to a target individual GetObjectPropertiesOfSource and GetObjectPropertiesOfFiller are provided (see Figure 24). They return a set of object property synsets. The object properties of a source individual a are those object properties R where there exists an individual b such that (aIi, bIi)RIpo in all models of the KB (and vice versa for the corresponding filler query). The query GetObjectPropertiesBetween returns all object properties which relate two given individuals.

The negative flag of those queries indicates whether this queries refer to the positive (default) or negative object property assertions. When set to true this flag refers to NegativeObjectPropertyAssertions which state that two entities are not related by a property. For instance, the result set of the GetObjectPropertiesOfSource query will then contain all object properties R where there exists an individual b such that (aIi, bIi)RIpo in all models of the KB.

Asks about object properties which relate individuals
Figure 24. Querying Instantiated Object Properties between Individuals

Figure 25 shows the asks for checking whether two individuals or an individual and a constant are related via a given property (AreIndividualsRelated resp. IsIndividualRelatedWithConstant).

Asks about related individuals and constants
Figure 25. Asks for Checking Relatedness between Individuals and Constants.

In Figure 26 there are the corresponding data property queries from above (Figure 24) in order to retrieve data properties which relate individuals with constants.

Asks about individuals
Figure 26. Querying Instantiated Data Properties

5.4.3 Queries about related Individuals

The queries GetObjectPropertyFillers and GetObjectPropertySources take an object property and an originating/target individual and return all fillers resp. sources with respect to the property (see Fig. 27). The result consists of a set of individual synsets. Formally, given an individual a and an object property R the GetObjectPropertyFillers response consists of all individuals bn where (aIi, bkIi)RIpo for 1 ≤ kn in all models of the KB (and vice versa for the corresponding source query). The negative flags refer to the kind of property assertion (either positive or negative).

Asks about individuals
Figure 27. Querying Fillers/Sources of Instantiated Properties

GetInstances returns those individuals which are instances of a provided description, i.e. all a wrt. C for which aIiCIc. When setting its direct flag to true the result set excludes those individuals which are also instances of sub-classes of the given description.

Asks about individuals
Figure 28. Querying Fillers/Sources of Instantiated Properties (flattened version of Fig. 27)

The queries about related individuals also come in a so called flattened variant as shown in Figure 28. Here, the result set contains exactly the same individuals as before but is made flat in terms of not grouping equivalent individuals anymore. This is especially useful when applying the unique name assumption (UNA) where different identifier always refer to different individuals.

5.4.4 Queries about Individuals Related to Constants

Likewise to the queries about related individuals there are queries with respect to individuals related to constants via data properties. Those queries allow to retrieve the source individuals for a given data property and constant as well as the constant for a given individual and data property (Figure 29). Note that the negative flag, in contrast to the object property queries, is only allowed within GetDataPropertySources (it is simply unclear how to deal with an infinite result set; e.g. GetDataPropertyFillers[negative=true](i, r) with functional(r), domain(r, xsd;integer) and r(i, 1)).

Asks about individuals
Figure 29. Querying Fillers/Sources of Instantiated Data Properties

The former also comes with a flattened variant (see Figure 30) in order to trade semantic information (about equivalent individuals) for a smaller result message in case communication performance is of high importance to the client.

Asks about individuals
Figure 30. Querying Fillers/Sources of Instantiated Data Properties (flattened version of Fig. 29)


6. References

[HTTP/1.1]
Hypertext Transfer Protocol — HTTP/1.1, Request for Comments 2616. R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, and T. Berners-Lee.
[XML Schema]
XML Schema Part 1: Structures Second Edition. Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, eds. W3C Recommendation 28 October 2004, http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/. Latest version available at http://www.w3.org/TR/xmlschema-1/.
[OWL 2 Specification]
OWL 2 Web Ontology Language: Structural Specification and Functional-Style Syntax. Boris Motik, Peter F. Patel-Schneider, Ian Horrocks. W3C Working Draft, 11 April 2008, http://www.w3.org/TR/2008/WD-owl2-syntax-20080411/. Latest version available at http://www.w3.org/TR/owl2-syntax/.
[OWL 2 Semantics]
OWL 2 Web Ontology Language: Model-Theoretic Semantics. Bernardo Cuenca Grau, Boris Motik. W3C Working Draft, 11 April 2008, http://www.w3.org/TR/2008/WD-owl2-semantics-20080411/. Latest version available at http://www.w3.org/TR/owl2-semantics/.
[OWL 2 Profiles]
OWL 2 Web Ontology Language: Profiles. Bernardo Cuenca Grau, Boris Motik, Zhe Wu, Achille Fokoue, Carsten Lutz. W3C Working Draft, 11 April 2008, http://www.w3.org/TR/2008/WD-owl2-profiles-20080411/. Latest version available at http://www.w3.org/TR/owl2-profiles/.
[OWL API]
The OWL API. Matthew Horridge, Sean Bechhofer, Olaf Noppens, June 2007, http://owlapi.sourceforge.net/
[DIG 1.0]
The DIG Description Logic Interface: DIG/1.0. Sean Bechhofer. Technical Report, Oct 2002, http://dl-web.man.ac.uk/dig/2002/10/interface.pdf.
[DIG 1.1]
The DIG Description Logic Interface: DIG/1.1. Sean Bechhofer. Technical Report, Feb 2003, http://dl-web.man.ac.uk/dig/2003/02/interface.pdf.
[DIG 1.1 Experience]
Implementation Experience with the DIG 1.1. Specification. Ian Dickinson. Technical Report HPL-2004-85, Hewlett-Packard, 2004, http://www.hpl.hp.com/techreports/2004/HPL-2004-85.html.
[DIG 2.0 Document Index]
DIG 2.0: The DIG Description Logic Interface. DIG Working Group Note September 2006, http://dig.cs.manchester.ac.uk/index.html.
[DIG 2.0 OWLED'06]
DIG2.0 – towards a flexible interface for Description Logic reasoners. Anni-Yasmin Turhan, Sean Bechhofer, Alissa Kaplunova, Thorsten Liebig, Marko Luther, Ralf Möller, Olaf Noppens, Peter Patel-Schneider, Boontawee Suntisrivaraporn, and Timo Weithöner. In Proceedings of the OWL Experience and Directions Workshop at the ISWC'06, November 2006.
[OWLlink OWLED'08]
OWLlink: DIG for OWL 2. Thorsten Liebig, Marko Luther, Olaf Noppens, Mariano Rodriguez, Diego Calvanese, Michael Wessel, Ralf Möller, Matthew Horridge, Sean Bechhofer, Dmitry Tsarkov, and Evren Sirin. In Proceedings of the OWL Experience and Directions Workshop at the ISWC'08, November 2008.
[OWLlink HTTP/XML Binding]
OWLlink: HTTP/XML Binding. Sean Bechhofer, Thorsten Liebig, Marko Luther, Olaf Noppens. Working Draft, October 2008, http://www.owllink.org/owllink-httpxml-20081001/. Latest version available at http://www.owllink.org/owllink-httpxml/.
[OWLlink Axiom Retraction]
OWLlink Extension: Retraction. Thorsten Liebig, Olaf Noppens. Working Draft, October 2008, http://www.owllink.org/ext/retraction-20081001/. Latest version available at http://www.owllink.org/ext/retraction/.
[OWLlink Told Retrieval]
OWLlink Proposal for a Accessing Told Data. Thorsten Liebig, Anni-Yasmin Turhan, Olaf Noppens, Timo Weithöner. DIG Working Group Draft, May 2006, http://www.owllink.org/ext/told-access-20081001/.
[OWLlink Query Interface]
OWLlink Proposal for a Query Interface. Alissa Kaplunova, Ralf Möller. DIG Working Group Draft, Jan 2007, http://www.sts.tu-harburg.de/~al.kaplunova/dig-query-interface.html.
[OWLlink Concrete Domain Interface]
OWLlink Proposal for a Concrete Domain Interface. Alissa Kaplunova, Ralf Möller. DIG Working Group Draft, Sep 2006, http://www.sts.tu-harburg.de/~al.kaplunova/dig-cd-interface.html.
[OWLlink Non-standard Inferences]
OWLlink Proposal for Non-standard Inferences. Anni-Yasmin Turhan, Yusri Bong. DIG Working Group Draft, Sep 2006, http://lat.inf.tu-dresden.de/~turhan/NSI.html.
[OWLlink Explanation Extension]
OWLlink Proposal for an Explanation Interface. Boontawee Suntisrivaraporn. DIG Working Group Draft, Sep 2006, http://lat.inf.tu-dresden.de/~meng/dig-nsi-explanation.html.