Re: shapes-ISSUE-198 (rdf:langString): rdf:langString not included in datatypes [SHACL Spec]

On 19/11/16 17:16, Karen Coyle wrote:
>
>
> On 11/17/16 10:50 PM, Holger Knublauch wrote:
>> Hi Karen,
>>
>> - RDF 1.1 *does* mention rdf:langString (see the NOTE in
>> https://www.w3.org/TR/rdf11-concepts/#section-Datatypes)
>
> Yes, and it says there:
> "Language-tagged strings have the datatype IRI
> http://www.w3.org/1999/02/22-rdf-syntax-ns#langString. No datatype is
> formally defined for this IRI because the definition of datatypes does
> not accommodate language tags in the lexical space. The value space
> associated with this datatype IRI is the set of all pairs of strings and
> language tags."
>
> So it treats it as an exception, and says that it is not defined as a
> datatype.

This is explaining, as I recall it, the reason that text is in RDF 1.1.

The note "No datatype is formally defined" is about a technical issue. 
"formally" is relevant.

The formal definition of a datatype includes a mapping from lexical 
space to value space.

The complexity arises as rdf:langString is retro-fitted on the original 
design of language-tagged literals -- "plain literals" in RDF 1.0. In 
RDF 1.0 language tagged literals didn't have a datatype. RDF 1.1 added 
datatypes for all literals.

For rdf:langString, there is no proper lexical space in the sense of XML 
Schema and RDF 1.0 which is a single sequence of characters, whereas for 
rdf:langString it would be is a pair of lang tag and lexical. (c.f. OWL 
went a different way - rdf:plainLiteral, which must not be used in RDF).

The WG though it was better to have datatypes everywhere rfathe rthan 
leave the RDF 1.0 form.

The alternative for the WG was to change the notion of lexical space but 
that come from XML Schema and how have big knock on effects.  The 
compromise was to partially define "rdf:langString" - the URI has a 
meaning - without all the details of the machinary of lexical space.

The URI as a datatype is defined by the statement:

RDFS schema: 2.4
"The class rdf:langString is the class of language-tagged string values."

which is normative.

In SPARQL DATATYPE("foo"@en) is rdf:langString by definition in 
17.4.2.7.  That's there because SPARQL 1.1 went to REC before RDF 1.1.

 Andy

Received on Friday, 9 December 2016 12:08:28 UTC