- From: David Booth <david@dbooth.org>
- Date: Fri, 30 Oct 2020 17:49:54 -0400
- To: public-rdf-star@w3.org
- Cc: Aidan Hogan <aidhog@gmail.com>
On 10/30/20 2:53 PM, Peter F. Patel-Schneider wrote: > I had thought that it might be possible to produce something useful by > employing non-injective mappings when determining the IRI for an embedded > triple. But this approach has potential problems because embedded statements > with different subjects, predicates, or objects will end up being the same. > Even if the the only thing that mapping is insensitive to is the actual > identity of blank nodes then you end up with situations like: > > :Mary :said s:Johnsaw_ . > s:Johnsaw_ rdf:type rdf:statement . > s:Johnsaw_ rdf:subject :John . > s:Johnsaw_ rdf.predicate :saw . > s:Johnsaw_ rdf:object _:b1 . > > :Mary :said s:Johnsaw_ . > s:Johnsaw_ rdf:type rdf:statement . > s:Johnsaw_ rdf:subject :John . > s:Johnsaw_ rdf.predicate :saw . > s:Johnsaw_ rdf:object _:b2 . > > Here the statement s:Johnsaw_ has two objects, which appears to have > unintended consequences. I have not yet convinced myself that there is no way > to make this work, although I do believe that there are unintended consequences. Yes, presumably those should have been two different URIs, instead of using s:Johnsaw in both places. This is essentially the blank node canonicalization problem, i.e., the problem of relabeling or skolemizing blank nodes in a predictable repeatable way when doing RDF canonicalization. Aiden Hogan (copied) has done a lot of work on this, and -- if I'm remembering correctly -- one basic result is that, when renaming each blank node, you need to consider the whole blank-node-connected subgraph in which it appears. In other words, you need to consider the whole subgraph that is reachable via blank node connections. (Hopefully Aiden will correct me if I got this wrong or did not express it correctly!) David Booth
Received on Friday, 30 October 2020 21:50:08 UTC