More on datatypes: additional use-case

Recently, I came up with more use-case experience that has some bearing on 
datatypes.

See: http://www.w3.org/TR/photo-rdf/

In particular, I notice some rather "loose" use of datatyping with respect 
to some of the DC vocabulary:

relation
   identifies a series: the event or topic for a series of photographs.
   Can be a URL or a string.
   Example: Marian in Le Sidobre.

rights
   copyright statement, or the URL for one.
   Example: http://www.w3.org/People/Lafon/
            Copyright?1998

And I thought this one from a different schema was particularly, er, creative:

camera
   the brand and type of the camera, or a URL for the camera.
   If the latter, the URL identifies one actual camera, not all cameras of 
that type.
   Example: http://www.w3.org/People/Lafon/
            FooCamera8000i

I think the requirement for tidy literals in the graph makes this kind of 
usage a bit untidy.  I do think that the current datatype draft can cover 
this usage if we're clear that a property can have both literals and other 
values in its range;  To be sure, I'd like to see a little more explanation 
of how this works.  What follows is based on my interpretation of Pat's 
response to my earlier suggestion of possible problems:

[[[
The rdfs:range and rdfs:drange schema terms applied to a property operate 
independently.  rdfs:range tells us that in any satisfying interpretation 
of the graph, property object values that appear in the property's 
relational extension must also appear in the indicated class 
extension.  rdfs:drange applies a syntactic constraint on the form of 
literal that may appear in the graph as an object of the property.  When 
the range of a property permits lexical values, these may appear as 
literals in the graph subject to the constraints of any applicable 
rdfs:drange datatype.  The rdfs:drange term does not, however, constrain 
the form of lexical values that may be denoted by other means, such as a 
URIref.

It is possible for a property to allow both lexical and non-lexical values 
in its range.
Because literals always denote themselves, a literal used in the object 
position of a triple always denotes a lexical value in the range of the 
corresponding property.  Thus, for rdfs:drange to be meaningful, any 
property to which it is applied must not exclude lexical values from its 
range.
]]]

And some illustrative test cases:

(1) If the class extension of datatype:integer contains just integer 
values, not numerals, then:

    ex:age rdfs:range datatype:integer .
    ex:Jenny ex:age "10" .

Can never be satisfied.


(2) If the class extension of datatype:age contains just integer values, 
not numerals, then:

given:

    ex:age rdfs:drange datatype:integer .
    ex:age rdfs:range ex:AgeInYears .

then:

    ex:Jenny ex:age "10" .
    ex:Jenny ex:age IntegerValue:_10 .
    ex:Jenny ex:age StringValue:_10Years .

can all be satisfied for:
- the expected interpretation of datatype:integer,
- IntegerValue:10 denotes the integer value 10, and
- StringValue:_10Years denotes the string value "10 years".
- ex:age relational extension includes
   { <I(ex:Jenny),"10">, <I(ex:Jenny),10>, <I(ex:Jenny),"10 years"> }
- ex:AgeInyears class extension includes:
   { "10", 10, "10 years" }

(Note that "10 years" does not satisfy the literal constraint of 
datatype:integer.)

#g


-------------------
Graham Klyne
<GK@NineByNine.org>

Received on Wednesday, 27 March 2002 05:31:26 UTC