Re: Rethinking how literals are defined

On 18-11-13 22:06, Andy Seaborne wrote:
> 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.

+1 here. While I like most of the rephrasing the term "typed value" is 
indeed very confusing.  I don't see why we need, anyway.

Guus

>
> 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:19:09 UTC