- From: Andy Seaborne <andy@apache.org>
- Date: Mon, 18 Nov 2013 21:06:54 +0000
- To: public-rdf-wg@w3.org
On 18/11/13 19:48, Markus Lanthaler wrote:
> On Monday, November 18, 2013 7:35 PM, Andy Seaborne wrote:
>> On 18/11/13 14:38, Markus Lanthaler wrote:
>>> One more thing :-)
>>>
>>> On Monday, November 18, 2013 3:33 PM, Markus Lanthaler wrote:
>>>> --------------%<-----------------------
>>>> Literals are used for values such as strings, numbers, and dates.
>>>>
>>> [...]
>>>>
>>>> A literal is a language-tagged string if the third element is present.
>>>> Lexical representations of language tags MAY be converted to lower
>>>> case.
>>>> The value space of language tags is always in lower case.
>>>
>>> A literal is a *typed value* if its datatype IRI does not equal
>>> rdf:langString.
>>
>> ?? It's always typed in RDF 1.1
>
> Right. Literals consist of language-tagged strings and things that are
> literals but not language-tagged strings. I would like to give those things
> a name and proposed "typed value".
>
>
>> I think it's clearer if we say that literals always have a datatype.
>
> Isn't that obvious from the description in the other email ("A literal in an
> RDF graph consists of two or three elements...")?
No, not obvious if there is something called a "typed value" that is
different from having a datatype and not related to "values"
Why do we need terminology for "not rdf:langString" -- why not
terminology for "not xsd:string" which is special in TTL syntax forms as
well:
:x :p "foo" .
:x :p "foo"@en .
:x :p "foo"^^my;type .
I find it very confusing to have "datatypes" and "typed values" and
"values" being different concepts. "typed values" is not the value of a
literal either as it is due to abstract syntax not the value space.
And
:x :p "foo".
is a typed value without the (data)type showing.
>
>
>>> This would make it much easier to talk about "literals which are not
>>> language-tagged strings".
>>
>> Previous email:
>>> - if and only if the datatype IRI is rdf:langString, optionally a
>>> non-empty language tag as defined by [BCP47]. The language tag MUST
> be
>>> well-formed according to section 2.2.9 of [BCP47].
>>
>> If it has a datatype of rdf:langString then it must have a language
>> tag.
>>
>> We ought to be clear about:
>>
>> "foo"^^rdf:langString
>
> This is not a language-tagged string but still a literal as far as I
> understand it. Is that correct?
No idea - that's why I'm asking.
Your text which say says there is an optional non-empty language tag and
it must be [BCP47] if the datatype is rdf:langString.
This example fall outside that but it has a datatype IRI of
rdf:langString so it's covered by the "if and only if".
I propose
1/ If the datatype is rdf:langString then there is a language tag string.
2/ if the language tag string is not empty, it must be BCP47 syntax.
I think it's important all impls do the same thing. Also, this is what
SPARQL supports (since 1.0) although was motivated by RDF/XML using
xml:lang="" for switching the language tag off if set further out.
Andy
>
>
> --
> Markus Lanthaler
> @markuslanthaler
>
>
Received on Monday, 18 November 2013 21:07:24 UTC