From: Ian Horrocks ([email protected])
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