Re: "Language-tagged strings Re: Toward easier RDF: a proposal"

Thank Andy.
I'm trying to get this straight in my head, so I may need to ask you to indulge me if/when I miss something.

Sorry to go on, but I see Literals being what I think is Badly Used quite a lot, and to me it actually negates the value of the Semantic Web/Linked Data, and is close to turning the way we use RDF into a Graph Database.

> As someone who works with a product that is used by users in different geographies, I can say that language tags matter.

Yes, language tags matter hugely - that's why I am concerned about them (and spend a lot of my time dealing with them).
This is the Web after all.
And by the way - I would never suggest that we change the format of the tags (I think) - we deeply need the goodness of the web stack that does all that Accept stuff to do the negotiation and everything for us.

But this is where I have difficulty:
> That would make all occurrences of "chat" @en.


Yes.
But they are - that is the RDF world, I think.
And they are also any other languages the RDF says they are.

"chat" is a literal - it isn't a word with any meaning - if I want one of those, I should be using Opencyc or Wikidata or my own URI or whatever for that.
And of course the great thing about that is that you get all the free multi-lingual (including possible pronunciation) that such sites give you - that is the value of Linked Data/Semantic Web. You may not even have/want to state the Literal yourself - just use the URI and get any Literals in any languages you want if it has them.

My rule of thumb is that if the predicate isn't rdfs:label or similar, then my RDF is probably wrong, because it is attaching too much meaning to a literal.
(That was part of my point about "shower".)
I consider even foaf:{xxxx}name "naughty" in this respect - I think that it should probably have the concept of Name with labels attached; then you could have things like the same name rendered in different scripts easily, or say that "Amadeus", "Gottlieb" and "Theophilus" are all different literals of the same name, as Mozart thought, and you can attach different language tags if you want.
But I get that people wanted one less link for FOAF, of course.

So I don't think you are writing good RDF if you say
> And I live near "cymru"@cy.


How can you live near a Literal?!
You should say you live near a location that has labels (or whatever), one of which is in @cy and is "cymru"

And no, I don't want a Blank Node for it - the system that generates this should create a URI if it doesn't already have one ;-)

Best

> On 23 Nov 2018, at 14:03, Andy Seaborne <andy@seaborne.org> wrote:
> 
> 
> 
> On 23/11/2018 12:03, Hugh Glaser wrote:
>> Ah, good topic.
>> So another thing I don't understand (:-)) is why we have to have language tags on strings at all, and indeed datatypes.
> 
> As someone who works with a product that is used by users in different geographies, I can say that language tags matter.
> 
> And I live near "cymru"@cy.
> 
>> (OK, it's because of XML heritage or something, I guess.)
>> But we have a perfectly good way of representing knowledge about things.
>> It is a real pain to create these 3 component literals and to query for different languages and datatypes in SPARQL.
>> And worse still, if you want to query for strings that may or may not have language tags on, you need to do some real messing about.
> 
> STR(?var) in SPARQL.
> 
> xsd:string("abc"@en) if you are lucky.
> 
>> I often end up adding @en to all the strings, or removing region tags etc., just so I can do things more easily, which is surely a Bad Thing.
>> Surely languages and datatypes should simply be RDF properties of Literals, which are 1 component things?
>> Much easier to explain to developers, and for them to use.
>> (If indeed they want to use raw RDF.)
> 
> As in:
> 
>  "chat" rdf:lang "en" .
> 
> ?
> 
> That would make all occurrences of "chat" @en.
> 
> They really are different literals.
> 
>    Andy
> 
> 
>>> On 23 Nov 2018, at 11:48, Andy Seaborne <andy@seaborne.org> wrote:
>>> 
>>> The RDF 1.1 WG did spend some time of this - both on putting the langtag into the lexical space and putting the lang tag into the datatype.  Both are not so easy; in the end the rdf@langString at least meant all literals had a datatype.
>>> 
>>> With the lexical form is a pair (string, lang) and squeezing that into a single string, it gets a bit unintuitive when strlen("hello@en") is 8, not 5. SeeAlso rdf:plainLiteral.
>>> 
>>> For datatypes, language tags have their own structure and hierarchy (lang-script-region-...) for their requirements which does not really fit with datatype subtyping very well.
>>> 
>>> I don't think changes would simplify.
>>> 
>>> We have what we have and people have been explaining to the wider community (i.e. it's not just people on this list affected). So "technically better" isn't the criterion, it should be "unlocks potential that is currently, provably blocked".
>>> 
>>>    Andy
>>> 
>>> On 23/11/2018 08:42, Wouter Beek wrote:
>>>> Dear David, others,
>>>> As another attempt at simplifying RDF, would it be possible to do away
>>>> with the special status of language-tagged strings?
>>>> In RDF 1.1 literals consist of 3 components: lexical form, datatype
>>>> IRI, and language tag.  The last component is only used in
>>>> language-tagged strings.  Would it be possible to define
>>>> `rdf:langString' as a regular datatype IRI and have literals consist
>>>> of 2 components instead?
>>>> RDF 1.1 Concepts and Abstract Syntax currently contains many caveats
>>>> to accommodate the idiosyncratic nature of language-tagged strings,
>>>> e.g.,:
>>>>> 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.
>>>> Would it be possible to define a regular lexical space, e.g.,
>>>> containing "hello@en"^^rdf:langString, together with a value-2-lexical
>>>> and a lexical-2-value mapping?
>>>> The N3 and SPARQL notation "hello"@en will of course still be
>>>> available, and will be syntactic sugar for "hello@en"^^rdf:langString.
>>>> ---
>>>> Best regards,
>>>> Wouter Beek.
>>>> Email: w.g.j.beek@vu.nl
>>>> WWW: https://wouterbeek.org
>>>> Tel: +31647674624
>>> 
> 

-- 
Hugh
023 8061 5652

Received on Saturday, 24 November 2018 11:51:27 UTC