- From: Sandro Hawke <sandro@w3.org>
- Date: Thu, 06 Dec 2001 19:47:07 -0500
- 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 UTC