Re: Rethinking ISSUE-12 with lang datatypes

On 26/05/11 19:26, Richard Cyganiak wrote:
> On 26 May 2011, at 17:32, Andy Seaborne wrote:
>> We would need a (data)type to cover value space of both xsd:string
>> and rdf:LangTaggedString so you can write:
>>
>> skos:prefLabel rdfs:range rdf:String .
>>
>> http://www.w3.org/TR/skos-reference/#S12
>>
>> (If a datatype, empty value space - I don't think we can use
>> rdf:PlainLiteral's lexical space without making it some sort of
>> special case)
>
> Every datatype is automatically also a class that contains all
> members of the value space. This is why you can use rdfs:range with
> datatypes in the first place.
>
> So you can already say
>
> skos:prefLabel rdfs:range rdf:PlainLiteral .
>
> and that only says that objects of skos:prefLabel statements are
> members of the value space of rdf:PlainLiteral -- which covers the
> value space of both xsd:string and rdf:LanguageTaggedString. This
> doesn't say anything about the lexical form.
>
> I don't think any special casing is needed in the specs to make this
> work. It already follows from the definition of rdf:PlainLiteral.
>
> (I think RDF Concepts and/or RDF Schema could simply assert that
> rdf:PlainLiteral is a class, as this is consistent with the statement
> that rdf:PlainLiteral is a datatype -- it's implied anyways. So we
> keep the useful bit of rdf:PlainLiteral (it defines a name for a
> useful set of values), while ignoring the weird bit (the lexical form
> which MUST not be used anywhere anyways).)

Why not declare a class rdf:String that is the features we want and 
leave rdf:PlainLiteral, with all it's datatype features that are being 
used, alone? (make it a subclass).

We should not half use rdf:PlainLiteral (nor modify it) just because we 
want to do something different from the original design. We are not 
using it's datatype aspects so don't use it.

It's particularly confusing as rdf:LangTaggedString is a subclass of 
rdf:PlainLiteral but not a derived type.

     rdf:LangTaggedString rdfs:subClassOf rdf:String .
     xsd:string           rdfs:subClassOf rdf:String .

A reasonable expectation of users (whether technically right or not - 
people have intuitions about strings)

     skos:prefLabel rdfs:range <datatype>

is that they can write

     <s> skos:prefLabel "foo"^^<datatype> .

Another advantage: make it a sensible name, "plain" isn't helpful any more.

	Andy

Received on Friday, 27 May 2011 10:34:10 UTC