- From: David Booth <david@dbooth.org>
- Date: Tue, 27 Sep 2022 14:32:21 -0400
- To: semantic-web@w3.org
- Cc: Pat Hayes <phayes@ihmc.us>
On 9/27/22 09:58, Pierre-Antoine Champin wrote:
> lists do not only give you order, they give you "closedness": the
> first/rest ladder captures the fact that the list contains all these
> elements *and only them* (and in this particular order).
Small but important clarification: currently RDF lists do NOT give
"closedness", but "closedness" is definitely what we want (for the vast
majority of use cases). That is precisely one of the reasons I and
others feel such a need for (closed) arrays.
> . . .
>> Hugh Glaser wrote:
>> I also worry that if I assert exactly the same knowledge twice, a paper could end up with two authorLists, certainly if bonds got involved.
>
> Indeed...
>
> That's actually something that "lists as first class citizens" could
> help solve -- that is, if they were defined in such a way that two lists
> with exactly the same elements are in fact one and the same object.
Yes, that is exactly what's needed, and it is readily attainable if we
eliminate *explicit* blank nodes. By explicit blank nodes, I mean blank
nodes that are written like _:b42 in Turtle. Implicit blank nodes,
written with square brackets like "[ ... ]", do not cause problems
because they are guaranteed to be acyclic. This means that it would be
easy for tools to generate a consistent internal identifier for them,
based recursively on their constituent elements. (This is closely
related to RDF canonicalization, which becomes trivially easy without
explicit blank nodes.) Eliminating explicit blank nodes would mean that
we'd lose the convenience of not having to allocate an IRI. I think
there are ways to address that loss in other ways, but that's another topic.
> But that would depart from their current interpretation, and not
> necessarily fit all use-cases,
Agreed, but it would fit the most common use cases. It doesn't have to
fit *all* use cases.
> so this is not something to decide lightly. This is
> the kind of semantic rabbit hole that Pat Hayes was warning about
> earlier in this thread (if I got his point correctly).
I hope Pat will correct me if I'm wrong, but my read of the discussion
so far is that the semantics would not be a big problem: both arrays and
composite objects can have very straight-forward -- and very similar --
semantics. And it's clear to me at least that although the
rdf:aboutEach functionality could be useful in some cases, it is not
what we need as the basic array functionality. The basic functionality
that we need is for an assertion about an array to *only* be about that
array -- not about every element in that array:
("apples" "bananas" "peaches") ex:length 3 .
And one other comment . . .
On 9/27/22 09:43, Pierre-Antoine Champin wrote:
> If we can design other efficient design patterns for conveying order and
> "closedness" (such as the one proposed above), I believe that the need
> for representing lists would not be as pressing as suggested in this
> thread.
Possibly. But software developers have been using arrays for 60+ years,
and they *expect* them. So as a practical matter, I think the
straight-forward solution is to add proper support for arrays, perhaps
in a new higher-level RDF 2.0 syntax, to avoid breaking any existing RDF
or tools.
As Manu Sporny put it, by not having proper array support in RDF, we're
currently "giving developers a big fat middle finger in that area".
https://web.archive.org/web/20200119081859/https://manu.sporny.org/2014/json-ld-origins-2/
I think we should address that gap.
Thanks,
David Booth
Received on Tuesday, 27 September 2022 18:32:36 UTC