Re: heading toward datatyping telecon

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