DQL queries

From: Ian Horrocks (horrocks@cs.man.ac.uk)
Date: 07/09/02

  • Next message: Peter F. Patel-Schneider: "DAML+OIL model theory stance on classes as instances"
    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