From: Ian Horrocks (horrocks@cs.man.ac.uk)
Date: 07/09/02
I dashed this off fairly quickly, so please forgive any errors or omissions. Hopefully it is enough to clarify my idea of "reasonable" queries. The current DQL spec says: A DQL query contains a "query pattern" that is a collection of DAML+OIL sentences in which literals and/or resources have been replaced by variables. As I mentioned in the telecon, I believe that it may be difficult to give sense/meaning to arbitrary sentences and replacements. I was asked to say what type of queries I think are "reasonable" (for which we could give a clear semantic account). I will consider only single elements of a query, i.e., single "DAML+OIL sentences in which literals and/or resources have been replaced by variables" - a full query is just a collection of these (although some combinations may not make sense), which is treated implicitly as a conjunction. As a minimum I would expect the following types of query element to be of interest: type(x,C) P(x,y) subClassOf(v,w) where C is an arbitrarily complex DAML+OIL class, P is a property that is NOT used in RDF, RDFS or DAML+OIL syntax, x,y are individual variables (can bind to individual names) or individual constants (individual names) and v,w are class variables (can bind to class names) or constants (class names). This allows us to ask the types of query that seem most likely to be of interest. E.g., our favourite Uncle query (give me all the Uncles of Peter): x s.t. {parentOf(x,Peter), siblingOf(y,x), type(y,Male)} or give me all the people all of whose parents are BlueBloods: x s.t. {type(x,Person), type(x,Restriction(onProperty(Parent),toClass(BlueBlood)))} or give me all the subClasses of Person: v s.t. {subClassOf(v,Person)} or tell me if class C is inconsistent: {subClassOf(C,Nothing)}. One could imagine other possible elements. Peter suggested range(P,v) and domain(P,v), but the semantics here are not quite so clear - are we asking about syntax, or do we mean something like "the biggest class C s.t. onProperty(P),toClass(NOT C)) is inconsistent? (I doubt that, in general, there exists a unique answer the latter kind of query; in fact such queries may very well be undecidable.) Anther kind of query one could imagine are syntax queries, i.e., retrieve stuff that is written in the KB. I suppose we could use DQL to do this. At this level, the KB could be considered as RDF/RDFS, and queries could (in principal) be answered by one of the existing "triple engines". It doesn't seem to make much sense to mix this kind of query with the DAML+OIL semantically based queries discussed above. Ian
This archive was generated by hypermail 2.1.4 : 07/09/02 EDT