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

On Mon, 13 Jul 2020 at 02:32, Jeen Broekstra <jeen@fastmail.com> wrote:

>
>
> 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 ] .
>

I believe the big appeal of putting it all into the zone we call "literals"
is that you get a kind of atomicity; that chunk of data is either there, or
not there; it is asserted, or not asserted. With a triples-based
(description of a ) data structure you have to be constantly on your guard
that every subset of the full graph pattern is at least sensible and
harmless, even when subsetting these chunks is often confusing or
misleading for data consumers. I can't help wondering whether notions of
graph shapes from shacl, shex (and sparql) could be exploited to create an
RDF-based data format which had atomicity at the level of entire shapes.

Dan


>
>
>
> Jeen
>

Received on Thursday, 16 July 2020 13:58:43 UTC