Re: rdfs:subClassOf and XSD derivation by restriction

Andreas Harth wrote:

>> The examples in §7.2.1 of RDF 1.1 Semantics tells us that any valid 
>> statement of the form
>> 
>> ex:a ex:p "sss"^^xsd:decimal .
>> 
>> D-entails
>> 
>> ex:a ex:p "sss"^^xsd:integer .

[These, of course, are the wrong way round.  But I hope my 
meaning was clear, all the same.]

> The RDF 1.1 semantics spec gives that example and implicitely derives that 
> entailment from the XSD specification (I think).

Having thought about this in some more detail, I think I now 
understand it.

So far as I can tell, none of the RDF specs formally defines 
the lexical-to-value mapping of the RDF-compatible XSD 
types.  I'd expect it to be defined in §5.1 of RDF 1.1 
Concepts but it is not said explictly.  Nevertheless, I'm 
sure it's intended that the lexical space, value space and 
lexical-to-value mapping of these types for the purpose of 
RDF is the same as their lexical space, value space and 
lexical mapping as defined in XSD.  Taking that as read, it 
follows that

   L2V(I(xsd:integer)) ⊆ L2V(I(xsd:decimal))

For a string "sss" in the lexical space of xsd:integer,

   I("sss"^^xsd:integer) = IL("sss"^^xsd:integer)
                         = L2V(I(xsd:integer))(sss)
                         = L2V(I(xsd:decimal))(sss)
                         = I("sss"^^xsd:decimal)

Given the triple

   ex:a ex:p "sss"^^xsd:integer .

we know

   < I(ex:a), I("sss"^^xsd:integer) > ∈ IEXT(I(ex:p))

and, using the result above,

   < I(ex:a), I("sss"^^xsd:decimal) > ∈ IEXT(I(ex:p))

Therefore that triple entails the following triple:

   ex:a ex:p "sss"^^xsd:decimal .

This is pure D-entailment.


> But given that RDF, RDFS (and OWL) entailment is layered on top of 
> D-entailment, datatypes have to be correctly handled even if the RDF 
> processor does not know about RDF, RDFS and OWL entailment.

This is a pertinent comment, as it seems to me that D 
entailment is the least well understood entailment regime. 
It's easy enough in the simple case where the only 
recognised datatypes are xsd:string and rdfs:langString 
which are the only two required ones, but as soon as other 
types come in, it gets hairy rapidly.

Richard

Received on Tuesday, 6 March 2018 16:46:15 UTC