Re: blank nodes (once again)

>>>>> Reto Bachmann-Gmür <reto@gmuer.ch> writes:
>>>>> On Tue, Mar 15, 2011 at 5:30 PM, Ivan Shmakov wrote:

 >> Treating this particular issue doesn't seem overly difficult.
 >> First, we may split the source graph into subgraphs so that each of
 >> the subgraphs will contain only those blank nodes that are linked to
 >> each other only via arcs and other blank nodes, and only those
 >> non-blank nodes that are exactly one arc away from any of the blank
 >> nodes contained.  (A procedure similar to the one described in CBD.)
  
 >> Then, serializing the resulting subgraphs using a kind of
 >> “canonical” representation (which, in particular, imposes an ordered
 >> and stable blank nodes naming), and hashing them, the duplicate
 >> statements and whole subgraphs could be detected and removed from
 >> the store.

 > This procedure doesn't guarantee that the result graph is lean.  As
 > an MSG might be a subgraph of another.

 > E.g.:

[…]

 > Just by not duplicating MSGs this would result in

 > :joe :has [a :dog; :name "Silvio"]; :has [ a :dog ].

 > which doesn't expresses more than

 > :joe :has [a :dog; :name "Silvio"].

 Indeed, thanks!

 Is the case of the graph being a subgraph to another graph the
 only obstacle on the way, or are there other ones?

 Just to be clear — I do not consider OWL for now, as:

 • this adds a whole new class of “different graphs — same
   knowledge” cases;

 • I cannot see how a reasonable graph transport mechanism may
   alter the graphs in such a way that these cases may occur in
   practice; (OTOH, it's rather simple to get the same subgraph
   duplicated while being transported.)

 > A couple of years ago I implemented an open source Graph Versioning
 > System which is based on graph decomposition and thus very similar to
 > what you describe above, it is still available at

 > http://sourceforge.net/projects/jena/
 > files/Graph%20Versioning%20System%20GVS/,

 > the sources are here:

 > http:// jena.svn.sourceforge.net/viewvc/jena/gvs/

 ACK, thanks for the pointer!

 (I'm quite bad at reading Java, and even worse at running it,
 but I'll surely check the documentation.)

-- 
FSF associate member #7257

Received on Tuesday, 22 March 2011 11:37:50 UTC