- From: Nicolas Chauvat <nicolas.chauvat@logilab.fr>
- Date: Thu, 9 Jul 2020 12:35:15 +0200
- To: Patrick J Hayes <phayes@ihmc.us>
- Cc: Anthony Moretti <anthony.moretti@gmail.com>, Thomas Passin <tpassin@tompassin.net>, Semantic Web <semantic-web@w3.org>
Hi List, I know this thread is coming to an end, please bear with me while I try to be sure of what to conclude from it before I let it rest in peace. On Thu, Jul 09, 2020 at 12:29:29AM -0500, Patrick J Hayes wrote: > Seems to me that I am just using language in the normal way, where > names are understood to refer to things, and that this has nothing > at all to do with any reference/value distinction, because we aren't > talking about data structures. English simply doesn’t have the > reference/value distinction. What motivates using "17"^xsd:integer instead of https://allnumbers.org/17 or "Trump"^xsd:string instead of https://allstring.org/Trump ? That's probably in the RDF spec... let me check if I can find it. > What /does/ make sense in RDF is the idea of ‘unpacking’ a datatype > into a collection of properties, then tying these together into a > bundle of triples all fixing the properties of something (written > typically as a bnode tying these triples together by acting as the > common subject). Then anything we wanted to say using the literal > can be done (at least in tha same graph) by using the bnode > instead. In fact, it would make sense to skolemize this, if the data > is important, because then other graphs can refer to the same value. I find this last sentence important. You are saying that for other graphs to refer to the same "value", it would make sense to skolemize the bnode that came out of the unpacking of a literal datatype. So, "some" bnodes may have an "environment/subgraph" that makes them more interesting to skolemize than others when we want to refer to values ? > Yes this is kind of possible. But it would be a mistake to think > that literals as currently defined in some sense /already are/ just > syntactic sugar for this kind of ‘unpacked’ representation. But one could define a pair of functions such that the first one turns the bnode/unpacked representation to the string/literal/packed one and the second one turns the string/literal/packed representation to the bnode/unpacked one, no ? I understand that literals are not that kind of syntactic sugar as of today, but the whole thread started from discussing evolutions to RDF and whether bnodes should die or not and what they are good for... > This makes a kind of intuitive sense since datatypes are required to > define a mapping from strings to values, and we have used the > datatype name in exactly that way. Does it mean that the second function of the pair I mention above is the datatype definition ? > > > Would you say that the two literals > > > "1;2"^<http://mydomain.com/mytypes/tuple-of-two-integers>> and > > > "1;2"^<http://mydomain.com/mytypes/tuple-of-two-integers>> are > > > different things ? > > > > Better not say that, as it would be flat wrong :-) > [...] > > > Does it follow from the open world assumption that > > > "2002-05-30"^xsd:date and "2002-05-30"^xsd:date are different values > > > because one could append the time information and write > > > "2002-05-30T09:00:00"^xsd:datetime ? > > > > No. It has absolutely nothing to do with the OWA. Adding more > > information to an RDF graph cannot change the meaning of a > > literal, whether the world is open or closed. I stand reassured :) > The meanings of literals are defined externally to the RDF spec, by > the specs for the datatype of the literal. So whatever the RDF > graph says about those literals, their value does not change. To summarize, if I understand correctly, the RDF spec says that there are literals and that these literals can have a datatype... and that's the end of it. So any value in RDF has to be a literal and if one wants an immutable composite value, one has to define a datatype and a pair of packing/unpacking functions that applications will use to access what is encoded in that literal. But what if we had "open-world" blank nodes that are "anonymous URI (apologies for the oxymoron)" and "closed-world" blank nodes that are good candidates for skolemization and a perfect fit to "cram data structures into RDF (as TomP said)" ? In another email PatHayes said "think of RDF as JSON with semantics", but in JSON, using a tree of dicts and lists, it is super easy to have a complex composite value ! I fail to see how to do the same in RDF, because assuming I use a blank node to group together the two coordinates of my point, it entails from the OWA that this blank node can be "extended" and that my pair of coordinates is not immutable. Not all of you may like the programming language comparison, but in Python, you could define a list [1,2] that can be extended an a tuple (1,2) that is immutable (same goes for sets and frozensets, dicts and frozendicts, etc). One could think of the former as an open-world version and the latter a closed-world version. It follows that lists can not be used as keys in mappings, but tuples can (the hashing algorithm works for immutable tuples, but not for mutable lists). There are lists in RDF, but there is no such thing as an immutable list (or tuple) in RDF, right ? Was it a design goal of RDF not to include immutable data structures / composite values ? If so, would anybody here remember why ? -- Nicolas Chauvat logilab.fr - services en informatique scientifique et gestion de connaissances
Received on Thursday, 9 July 2020 10:35:31 UTC