Re: Should rdf:value have a semantics??

[Patrick Stickler, Nokia/Finland, (+358 40) 801 9690, patrick.stickler@nokia.com]


> I've just looked at Pat's revised words in [1], section 3.2.4:
> [[
> The intended use for rdf:value is to associate some quantity with a literal 
> representing the 'amount' of the quantity, such as a weight in kilograms or 
> a length in yards. Examples of this kind of use are given in [RDF-PRIMER]. 
> Since the subject of the relevant triple can be any quantitity, and the 
> object can either be a plain literal indicating a textual representation of 
> the amount or a typed literal denoting the numerical value of the amount, 
> there is no way to state this condition formally in a model theory.
> ]]
> 
> These words suggest that rdf:value is a superproperty over all properties 
> that express *quantities*;  i.e. numbers, etc., and their lexical spaces.
>
> Unfortunately, there's a counter-example in the original M&S, section 7.3, 
> which uses (something very like) the following:
> 
>     ex:docURI dc:subject _:x .
>     _:x rdf:value "020 - Library science" .
>     _:x ex:classification "DeweyDecimalCode" .

I think that it wouldn't be a bad thing if rdf:value were deprecated.

It makes for sloppy modelling, since it's hard to argue IMO that
one can expect the following entailment to always be valid

   IF
      some:Thing some:Property _:x .
      _:x rdf:value _:y .
   THEN
      some:Thing some:Property _:y .

Uses of rdf:value that I've seen have primarily been either (a) used
to build complex values where a more explicit property would be
more informative or (b) used where URIs were far more appropriate
(the above dc:subject example is an perfect example of this)

Rather than

   some:Thing x:length [ rdf:value "200"^^xsd:integer ;
                         x:unit "meters" ]

as typically done, one should do something like

   x:length rdfs:range x:Measurement .
   x:magnitude rdfs:domain x:Measurement .
   x:magnitude rdfs:range xsd:integer .
   x:unit rdfs:domain x:Measurement .
   x:unit rdfs:range x:UnitOfMeasure .
   <voc://example.com/units/meter> a x:UnitOfMeasure .

   some:Thing x:length [ x:magnitude "200"^^xsd:integer ; 
                         x:unit <voc://example.com/units/meter> ] .

Rather than

   ex:docURI dc:subject _:x .
   _:x rdf:value "020 - Library science" .
   _:x ex:classification "DeweyDecimalCode" .

one should say

   ex:docURI dc:subject <voc://example.com/dewey/020> .
   <voc://example.com/dewey/020> rdfs:label "Library Science" .

In either case, rdf:value does not IMO add any clarity to the model and
would be no great loss if deprecated.

--

The one use of rdf:value that does seem useful, though, is as a form
of scoping mechanism. E.g.

   some:Thing x:assemblyY [ rdf:value "1234" ; x:scope "Model_ABC" ] .

where the value is qualified according to the other properties
of the bnode apart from rdf:value. Otherwise, one must use the far
more verbose reification representation to do this, e.g.

   some:Thing x:assemblyY "1234" .
   [ a rdf:Statement ;
     rdf:subject some:Thing ;
     rdf:predicate x:assemblyY ;
     rdf:object "1234" ;
     x:scope "Model_ABC" ]

If it were possible to define rdf:value such that only this scoping
or qualification usage were allowed, then I'd say let's keep it,
but I don't see that happening, given the legacy usage...

Patrick

Received on Wednesday, 4 December 2002 08:48:02 UTC