On Fri, May 20, 2011 at 1:25 PM, Henry Story <henry.story@bblfish.net> wrote:
> In another thread I wrote:
>
>> think it would be interesting to add a method for getting the graph name, btw,
null if there is none
>
>
> Equality
> 
>
> So as Reto pointed out this could bring up an issue of what the equality criterion of
two graphs are.
>
> Currently the equality function is inherited from java.util.AbstractCollection which
just verified that all members internally are the same. (Btw, that looks like something one
should be careful about: calculating identity of large graphs seems a bit dangerous)
No, there are different identity criteria for Graphs and MGraphs, look
at their apis. And yes, graph is isomorphism is NPhard so for big
graphs with many bnodes it may take forever.
>
> (I think that's why there is a TripleCollection which does not define equality.)
>
> So there are a few answers one could have.
>  two graphs are equal if their names are the same
currently a graph has all the names that were ever given to it, that
is any name that was ever given to an isomorphic triple collection
implementing graph.
>  two graphs are equal if their statements are the same
by that you mean isomorphic?
>
> With statements based equality it is already clear that that will depend on whether inferencing
is enabled or not, and it could change as more information is available for inferencing.
>
> I wonder where graph equality is used at all, as it seems like a difficult to define
matter.
It is defined very precisely and it is used.
>
> Use Cases
> 
>
> From a graph be able to find meta data about it easily: who said it, where when, is
the current graph up to date?
>
> When fetching a graph from TcProvider with methods such as
>
> tc.getGraph("http://xmlns.com/foaf/knows")
>
> have the returned graph indicate the proper name of the graph where that object is
defined. That makes it easier to automate spiders.
>
> (not so sure but as a thought: It could allow for a very strict quasi identity criterion,
that could be easy to calculate:
> two graphs are the same if
> the objects are the same
> or the names are the same and the hashes of all their statements are the same
> )
the names are the same if and only if the graphs are isomorphic,
Reto
>
> Henry
>
> Social Web Architect
> http://bblfish.net/
>
>
