- From: Kendall Clark <kendall@monkeyfist.com>
- Date: Thu, 16 Sep 2004 08:08:22 -0500
- To: public-rdf-dawg@w3.org
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