Type of (the denotation of) a plain literal

I'm trying to answer a question that's come up in the CC/PP working group.

Can a plain literal be regarded as an instance of xsd:string?

I think it's fairly clear that a plain literal with a language tag is not 
an xsd:string, but less so in the case of a plain literal without a 
language tag.

Here are my test cases:

(1)  Is the following satisfiable?

    ex:prop rdfs:range xsd:string .
    ex:subj ex:prop "abc" .


(2)  Is the following satisfiable?

    ex:prop rdfs:range xsd:string .
    ex:subj ex:prop "abc"@en .


My answers are:

(1) I'm not sure, but I lean toward "no" on the current wording.
The abstract syntax [1] suggests to me that a literal in the abstract graph 
is a tuple of 1, 2 or 3 elements.  (It doesn't say that explicitly, though 
- it talks of a literal having up to three components.)  The formal 
semantics [2] says that a plain literal denotes itself.  [3] and [4] 
together state that the value space of an xsd:string (being the RDFS class 
extension of xsd:string treated as an RDF datatype) is a finite sequence of 
Unicode characters.  (I note here that the references are not quite 
compatible, since XML references [ISO/IEC 10646-2000] and the abstract 
syntax references [UNICODE], so to be absolutely formally correct we may 
need to revise the [UNICODE] reference.  Do we regard a non-language plain 
literal as a bare string or a 1-tuple or something else?  The language 
"contains" in [1] suggests it's not a bare string.

(2) No (because the two-component value ("abc","en") is not a value in 
xsd:string -- i.e. is not a finite sequence of characters.

In summary, I think the combination of abstract syntax and formal semantics 
needs tightening up here:  either (a) the abstract syntax should be more 
precise about what it is that contains three components, or (b) the formal 
semantics should be more explicit about how the components relate to what 
is denoted by a literal.

This may all seem rather arcane, but there's a real issue here:  Art 
Barstow has a proposal for UAProf/CCPP in which xsd:string is used as the 
range of an property.  Could the value of this property possibly be a plain 
literal?

#g
--

[1] 
http://www.w3.org/2001/sw/RDFCore/TR/WD-rdf-concepts-20030117/#section-Graph-Literal
[[
A literal in an RDF graph contains three components called:
]]

[2] http://www.w3.org/2001/sw/RDFCore/TR/WD-rdf-mt-20030117/#interp
[[
if E is a plain literal then I(E) = E
]]

[3] http://www.w3.org/TR/xmlschema-2/#string
[[
The ·value space· of string is the set of finite-length sequences of 
characters (as defined in [XML 1.0 (Second Edition)]) that ·match· the Char 
production from [XML 1.0 (Second Edition)].
]]

[4] http://www.w3.org/TR/2000/WD-xml-2e-20000814#dt-character
[[
[Definition: A character is an atomic unit of text as specified by ISO/IEC 
10646 [ISO/IEC 10646] [E67](see also [ISO/IEC 10646-2000]). Legal 
characters are tab, carriage return, line feed, and the legal characters of 
Unicode and ISO/IEC 10646.
]]


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

Received on Wednesday, 15 January 2003 14:12:54 UTC