UC&R 4.6 use case and discussion

Okay, I asked for a use case from Aditya in our lab, and he sent me this; I
could write a "proper" use case from this, and I think it's interesting
standalone.

Kendall
--
Most API to parse ontologies such as Jena and the Manchester OWL API have a
basic reasoning service (or query language from another angle) that isn't as
sound and complete as a RACER or Pellet say, but provides some fast and
convenient services for obtaining useful semantic information about an
ontology. These would be very useful in an RDF Query Language as well. For
example (some of them are RQL like),

class.getEquivalentClasses(ontologies, direct)
class.getSubClasses(ontologies, direct)
class.getSuperClasses(ontologies, direct)
class.getDisjointClasses(ontologies, direct)
class.getProperties(ontologies, direct) // get all object/datatype
properties who's domain is the class
class.getIndividuals(ontologies, direct)

where the "ontologies" parameter is used to specify the context for the
query since the same class (URI) can have different axiomatic definitions in
different ontologies, and "direct" is used to specify whether a transitive
closure of the query should be taken or not (similar to the ^ operator in
RQL). The first three methods above are useful for creating a class tree
hierarchy, even if they support only named classes (i.e. no anonymous
entities in the return set). This is almost a necessary feature in any
ontology editor/visualizer. Also, the methods seem straightforward enough to
implement and don't require any complicated inferencing algorithm. Finally,
construction of the tree hierarchy enables more useful queries such as
NearestCommonNamedAncestor(class1, class2,..) (since farthest would
obviously be owl:Thing) etc.

The last two methods above are very useful from the instance support point
of view in an ontology editor (w/ the getProperties method providing slots
for a more frame-based view). It would be nice to treat Properties
separately as Object and Datatype Properties in some queries esp. since OWL
(Lite & DL) enforces that distinction.

The corresponding methods exist for properties to extract a property tree
hierarchy. Other (related) useful queries for extracting semantic
information about properties would be:

property.getDomainsOf(ontologies, direct) //return all classes in
domain of property
property.getRangesOf(ontologies, direct)

and for individuals..

individual.getTypes(ontologies, direct)
individual.getProperties(ontologies, direct) // combination of
individual.getTypes(..) to get class set and class.getProperties(..)
for each class type
individual.getSame(ontologies, direct)
individual.getDifferent(ontologies, direct)

There are obviously more complicated queries I haven't considered, which
would involve advanced inferencing and hence considerably slow down the
querying process. All I know is that having these basic queries would make
use of the semantic information in the ontology to better enable ontology
visualization/editing. I'll let you know if I can think of others I might
have missed out.

Cheers,
Aditya

Received on Thursday, 16 September 2004 13:08:34 UTC