- 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