W3C home > Mailing lists > Public > public-rdf-wg@w3.org > August 2013

Re: RDF-ISSUE-140 (dataset-comparison): RDF Dataset Comparison (Ivan Herman) [RDF Concepts]

From: Andy Seaborne <andy@apache.org>
Date: Fri, 09 Aug 2013 18:20:54 +0100
Message-ID: <520524F6.7020200@apache.org>
To: public-rdf-wg@w3.org
On 08/08/13 05:46, Pat Hayes wrote:
>
> On Aug 7, 2013, at 12:54 PM, RDF Working Group Issue Tracker wrote:
>
>> RDF-ISSUE-140 (dataset-comparison): RDF Dataset Comparison (Ivan Herman) [RDF Concepts]
>>
>> http://www.w3.org/2011/rdf-wg/track/issues/140
>>
>> Raised by: Ivan Herman
>> On product: RDF Concepts
>>
>> I have a question/comment on this:
>>
>> [[
>> 4.1 RDF Dataset Comparison
>>
>> Two RDF datasets (the RDF dataset D1 with default graph DG1 and named graph NG1 and the RDF dataset D2 with default graph DG2 and named graph NG2) are dataset-isomorphic if and only if:
>>
>> 	 DG1 and DG2 are graph-isomorphic;
>> 	 For each (n1,g1) in NG1, there exists (n2,g2) in NG2 such that n1=n2 and g1 and g2 are graph-isomorphic;
>> 	 For each (n2,g2) in NG2, there exists (n1,g1) in NG1 such that n1=n2 and g1 and g2 are graph-isomorphic.
>>
>> ]]
>>
>> A graph name can now be a blank node. Wouldn't it be appropriate to use the 'M' mapping of section 3.6 for the graph names, too? Or are we deliberately silent on this?
>
> We need to do *something*, as the above definition is now wrong. For example, it says that these are isomorphic:
>
> { {_:x rdf:type ex:graphsIlike .}
> _:x {ex:a ex:b ex:c} }
>
> { {_:y rdf:type ex:graphsIlike .}
> _:x {ex:a ex:b ex:c} }
>
> which is incorrect.
>
> Yes, the best way to fix this would be to describe it in terms of the M mapping, IMO. Here is a stab:
>
> Two RDF datasets D1 (with default graph DG1 and named graph set NG1)
> and D2 (with default graph DG2 and named graph set NG2) are
> dataset-isomorphic if and only if there is a bijection M between the
> nodes, triples and graphs in D1 and those in D2 such that:
>
> 1. M maps blank nodes to blank nodes
> 2. M is the identity map on literals and URIs
> 3. For every triple <s p o>, M(<s, p, o>)=<M(s), M(p), M(o)>
> 4. For every graph G= {t1, ...1n}, M(G)={M(t1), ..., M(Tn)}
> 5. DG2 = M(DG1)
> 6. <n, G> is in NG1 if and only if <M(n), M(G)> is in NG2.
>
> I think this is correct and states the conditions about as neatly as possible.

Looks good.

One tweak

"M between the nodes, triples and graphs in D1"
==>
"M between the RDF Terms, triples, graphs and graph labels in D2"

node -> "RDF term"
explicitly put 'graph label' in the things mapped

The latter is not strictly necessary if 'RDF term' is used; 'node' is 
open to confusion with a general use of "node" as vertex of a graph.

	Andy


>
> Pat
>
>
>>
>> Ivan
>>
>> [http://lists.w3.org/Archives/Public/public-rdf-wg/2013Aug/0008.html]
>>
>>
>>
>>
>
> ------------------------------------------------------------
> IHMC                                     (850)434 8903 or (650)494 3973
> 40 South Alcaniz St.           (850)202 4416   office
> Pensacola                            (850)202 4440   fax
> FL 32502                              (850)291 0667   mobile
> phayesAT-SIGNihmc.us       http://www.ihmc.us/users/phayes
>
>
>
>
>
>
Received on Friday, 9 August 2013 17:21:22 UTC

This archive was generated by hypermail 2.3.1 : Friday, 9 August 2013 17:21:23 UTC