- From: Graham Klyne <GK@Dial.pipex.com>
- Date: Wed, 04 Oct 2000 23:10:04 +0100
- To: "McBride, Brian" <bwm@hplb.hpl.hp.com>
- Cc: Jeen Broekstra <jbroeks@cs.vu.nl>, www-rdf-interest@w3.org
At 09:04 PM 10/4/00 +0100, McBride, Brian wrote: >Part of it is that herbivore is defined to be a subclass of >a class expression. I would have expected it to be a subclass >of the value of that expression. My 2 penn'orth... I think the point here is that the _value_ of a class expression _is_ a class. So it is a subclass of the _value_ of the class expression. >Further, the class of which herbivore is a subclass is of type >oil:not. Herbivore is also a subclass of oil:not. >Intuitively, that feels very odd. This may have more to do with the choice of names. If the names were different: ([anon:cexpr], [rdf:type], [oil:NegationOfSomething]) ([anon:cexpr], [oil:theSomething], [#carnivore]) would it still feel so odd? >I've only got a contrived example to illustrate this one. The >class not carnivore is also the conjunction of not (carnivores >with legs) and not (carnivores without legs). This might be modelled > >([#herbivore], [rdfs:subClassOf], [anon:cexpr]) >([anon:cexpr], [rdf:type], [oil:and]) >([anon:cexpr], [oil:hasOperand], [cexpr2]) >([anon:cexpr], [oil:hasOperand], [cexpr3]) >. >. >. > >where cexpr2 and cexpr3 have further statements to define them >as not (carnivores with legs), and not (carnivores without legs) >respectively. > >If we combine these two sets of statements, which an RDF processor >is quite free to do as these are all statements about the same >resource [cexpr] then we get: > >([#herbivore], [rdfs:subClassOf], [anon:cexpr]) >([anon:cexpr], [rdf:type], [oil:not]) >([anon:cexpr], [oil:hasOperand], [#carnivore]) >([#herbivore], [rdfs:subClassOf], [anon:cexpr]) >([anon:cexpr], [rdf:type], [oil:and]) >([anon:cexpr], [oil:hasOperand], [cexpr1]) >([anon:cexpr], [oil:hasOperand], [cexpr2]) > >But now, we don't know which operand goes with with which operator. > >Basically, I'm concerned that the way class expressions have been >coded in RDF is such that they might be messed up by an RDF >processor which doesn't have the appropriate logic processing. I think the problem above is that you've assigned the same resource identifier (anon:cexpr) to placeholders for two *different* class expressions. They may have the same value, but they're different expressions. I think: >([#herbivore], [rdfs:subClassOf], [anon:cexprA]) >([anon:cexprA], [rdf:type], [oil:not]) >([anon:cexprA], [oil:hasOperand], [#carnivore]) >([#herbivore], [rdfs:subClassOf], [anon:cexprB]) >([anon:cexprB], [rdf:type], [oil:and]) >([anon:cexprB], [oil:hasOperand], [cexpr1]) >([anon:cexprB], [oil:hasOperand], [cexpr2]) would be right, and keeps the classes and operands properly attributable. #g ------------ Graham Klyne (GK@ACM.ORG)
Received on Wednesday, 4 October 2000 18:16:50 UTC