W3C home > Mailing lists > Public > www-rdf-interest@w3.org > December 2001

Indicating Closure ("and that's all there is")

From: Sandro Hawke <sandro@w3.org>
Date: Thu, 06 Dec 2001 19:47:07 -0500
Message-Id: <200112070047.fB70l7l13493@wadimousa.hawke.org>
To: www-rdf-interest@w3.org

RDF has an "anyone can say anything about anything" philosophy that
seems deeply at odds with the practical need to list a specific set of
properties and by omission negate all others.  If I'm listing my car
for sale in RDF, I can list the repair work that has been done to it,
but I cannot say that this is all the repair work.  If you ask an RDF
system "Has he ever had the timing belt changed?", and I have not, the
RDF system cannot truthfully answer (except to say "I don't know").
Since I never told it that I had told it about *all* the work, it
doesn't know whether the work was never done or the work-list is
simply incomplete.  In short, some information can only be provided by
enumerating the posititives and saying "and that's all there is".

To date, I suspect people have simply been lax about correctness or
built into their applications the meta-knowledge of which sets of
properties from particular datasources should be considered complete.
This wont work for general-purpose reasoning.

The one way I know to approach this in RDF is using
daml:UniqueProperty (and daml:List, although I could define that with
daml:UniqueProperty).  Rather than
     car hasRepair oilChange1.
     car hasRepair oilChange2.
     car hasRepair newClutch.
I can write
     car repairList list(oilChange1, oilChange2, newClutch).
     repairList rdf:type daml:UniqueProperty.
which tells everyone these are the ONLY repairs that have been 
done.   (RDF bags and sequences don't work for this, since they are
open-ended like the graph of properties.)

Using UniqueProperty does not force me to enumerate all knowledge at
once, either.  If you don't terminate the list, you're saying "...and
possibly more" (like normal RDF) and later you can add more or close
the list.  This is common technique in Prolog.

I come across this problem almost every time I try to use RDF.  I know
that in many cases, all the properties will be known, and knowing that
they are all known will be useful.  Therefor, the ontology has to be
designed using UniqueProperties and Lists.  This is a clumsy way to
use RDF: it results in at least twice the triples (not that I really
care about that) and many RDF tools will probably be hindered.   It
feels like using a lawnmower to trim the hedge.

Sometimes I think all properties should be UniqueProperties (then I'd
be using a hedge-trimmer).  This might be overkill, but it might not.
You can certainly do everything using only UniqueProperties (that's
what almost all programming languages do); I'm not sure what the cost
might be.   (Implementations will have to be clever to avoid linear
costs for many operations that are otherwise hash-lookups.   But I
think they can be that clever.)

I'd rather just find a way to say "and that's all" or "here's the edge
of the world", but I don't know how to do that. 

Has anyone solved this problem?  

      -- sandro
Received on Thursday, 6 December 2001 19:47:32 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:51:52 GMT