Re: Blank nodes must DIE! [ was Re: Blank nodes semantics - existential variables?]

On Mon, Jul 13, 2020, at 01:28, Anthony Moretti wrote:
> I'm not sure where to post this because there are some subthreads and it's hard to judge, if somebody would prefer that let me know, but it seems relevant to bnodes so posting it here.
> 
> In one subthread ("Datatypes") Pat says:
> 
>> I just wish we had allowed datatypes which used more than one character string, so that (for just one example that caused way too much hassle) language-tagged strings, but also things like latitude+longitude or number+ unit (5 inches, 27 cm, 3.5 kg) could have been handled naturally. Right now it is not easy to say in RDF that the Thames is 215 miles long, and also that 215 miles is the very same thing as 346 km. But this kind of thing is ubiquitous.
> 
> So maybe, rather than a literal or a bnode, RDF could just incorporate some JSON? Can put it all on one line like a literal or bnode, and can use nesting too.

Saying "incorporate some JSON into RDF" is a bit like saying "incorporate some nice words into the alphabet". They're at slightly different conceptual levels. 

I'm not against revisiting the structure of RDF literals and/or seeing what we can do to make things like units of measurement more easily represented. But making JSON objects first-class citizens does not really solve anything, I think.

For example: how does this bit of JSON fit into the conceptual model? How is it stored, and how is it queried and/or referenced? Is it a single node in the graph? Then how is it different from just having a literal with a JSON string as its lexical value? Or if it's a node with several associated properties, how is it different from just having any collection of statements with a shared subject (blank node or IRI) that together form the object value?

> Example triples (I've removed string quotations etc. because this is just rough pseudocode):
> 
>  france name {type: LanguageTaggedString, value: France, language: English}
>  place1 geoCoordinates {type: GeoCoordinates, latitude: 0.0, longitude: 0.0}

At the syntax level, this is *literally *(hah) what blank nodes already give you: assuming the above is pseudo-Turtle, pretty much all you've done is replace the square brackets with curly ones:

 :france :name [ :type :langString; :value "France"; :language "English" ] .
 :place1 :geoCoordinates [ :type :GeoCoordinates; :latitude 0.0; :longitude 0.0 ] .


Jeen

Received on Monday, 13 July 2020 01:27:07 UTC