- From: Brian McBride <bwm@hplb.hpl.hp.com>
- Date: Wed, 07 Nov 2001 12:35:32 +0000
- To: Patrick.Stickler@nokia.com
- CC: w3c-rdfcore-wg@w3c.org
Hi Patrick, [...] >> >>A use case demonstrating the problem would be helpful all round. >> >>Brian >> > > OK, here's the input data: Thank you. This is so much clearer. > > <rdfs:Class rdf:ID="integer/> > > <rdfs:Class rdf:ID="hexInteger"> > <rdfs:subClassOf rdf:resource="#integer"/> > </rdf:Class> > > <rdf:Property rdf:ID="intProperty"> > <rdfs:range rdf:resource="#integer"/> > </rdf:Property> > > <rdf:Property rdf:ID="hexProperty"> > <rdfs:range rdf:resource="#hexInteger"/> > <rdfs:subPropertyOf rdf:resource="intProperty"/> > </rdf:Property> > > <rdf:Description rdf:about="#foo"> > <hexProperty>0x12</hexProperty> > </rdf:Description> > > The 'integer' lexical form requires decimal notation. > The 'hexInteger' lexical form requires hexidecimal notation. > > -- > > Now, someone does a query which asks "what is the > value of the 'intProperty' property of '#foo'?" And > based on the subClassOf and subPropertyOf relations > defined in our scheme, we can deduce the following > binding: > > <rdf:Description rdf:about="#foo"> > <intProperty>0x12</intProperty> > </rdf:Description> Yes you can, though it might be a more useful query engine that returned: <rdf:Description rdf:about="#foo"> <hexProperty>0x12</hexProperty> </rdf:Description> Howveer, leaving that aside, by your choice of notation, you are not fully representing what the inference engine could return. I presume from the above we are considering the P option. What the query would actually return would be better represented as: <#foo> <#intProperty> _:lit:"0x12" . You are right that there is not sufficient information here to deduce what "0x12" means, but one could then query for the rdf:type property of _:lit:"0x12" which would return: _:lit:"0x12" <rdf:type> <#hexProperty> . And that is sufficient. Eh? :) [...] > > Now, if instead we had our data defined as follows: > > <rdf:Description rdf:about="#foo"> > <hexProperty rdf:resource="xxx:hexint:0x12"/> > </rdf:Description> > > then the logical binding of > > <rdf:Description rdf:about="#foo"> > <intProperty rdf:resource="xxx:hexint:0x12"/> > </rdf:Description> Yes, I see that. Its neat, and has some nice attractions from an implementors point of view. So far we have this use case for the P proposal, and your proposal, lets call that the X proposal (since P & S are already in use). Lets go for a full house an examine this use case with the S proposal. We would have: <rdfs:Class rdf:ID="integer/> <rdfs:Property rdf:ID="hexInteger"> <rdfs:subPropertyOf rdf:ID="repProperty"/> </rdf:Class> <rdf:Property rdf:ID="intProperty"> <rdfs:range rdf:resource="#integer"/> </rdf:Property> <rdf:Description rdf:about="#foo"> <intProperty hexInteger="0x12"/> </rdf:Description> Now if we query that for the value of the intPropoperty we get: <#foo> <intProperty> _:anon . Now querying for representation properties of _:anon we get _:anon <#hexInteger> "0x12" . which would seem to be sufficient. Finally, thanks again for taking the trouble to provide a concrete example. It communicated so much better to me, and possibly others in the WG, what you meant. Brian
Received on Wednesday, 7 November 2001 07:40:23 UTC