W3C home > Mailing lists > Public > www-rdf-interest@w3.org > August 2004

Re: RDF graph merging question

From: Thomas B. Passin <tpassin@comcast.net>
Date: Wed, 18 Aug 2004 00:04:04 -0400
Message-ID: <4122D534.9060806@comcast.net>
To: "www-rdf-interest@w3.org" <www-rdf-interest@w3.org>

Jan Algermissen wrote:

> Just to confirm: this means, that gathering separate nodes that actually
> represent the same 'thing' remains the burdon of the user of RDF (e.g.
> at the query-formulation-level), right?
> 

Well, it depends.  Suppose you are using an OWL-aware processor, and 
suppose that you have declared, in an OWLish way, that certain 
properties are inverse-functional, that is to say, identifying.  Then 
your processor should discover that two such nodes do in fact represent 
the same individual.

> Example: Suppose two computers are connected and we represent this as
> 
>   foo:host1 bar:connectedTo foo:host2
> 
> Now, in RDF graph A the triple is reified to attach the information
> 
>   foo:conn-host1-host2 baz:connectionType foo:ethernet to it
> 
> (the connection is an ethernet connection)
> 
> Now in some strore B, the same triple exists and is reified to attach
> a cable number:
> 
>   foo:connection-123 baz:cableNumber "XY-T-5665"
> 
> 
> An RDF store (at least one that does not provide some non-standard
> extension) cannot by itself provide me with the information that
> the connection is of type ethernet and has cable number "XY-T-5665",
> right?
> 

I don't see why you continue to want to reify these statements.  It does 
not do what you apparently want it to do, because the statement that is 
reified is not thereby asserted.  You would do better to follow Damian 
Steer's advice here.  Create a resource - it could be a bnode - to 
represent the connection.  Then you can hang as many actual (not 
reified) triples as you want off it, thus representing the information 
you seem to have in mind.

The main problem you have in any event is figuring out how to identify 
the connection nodes in the two graphs so that they represent the same 
resource.  You won't be able to do that by reifying.  RDF reification is 
not like topic map reification.

> It would be the burdon of the one formulating the query to traverse all
> the rdf:subject, rdf:predicate and rdf:object arcs to find the two
> seperate nodes for what is actually a single 'thing'.
> 
> Is that true? Or am I approaching this in a completely wrong way?
> 

It's not that different from merging topics in a topic map (which I 
mention because of your work on Goose, etc.).  You have to decide what 
the rules are that let you know that the topics represent the same 
thing, then you can merge them.  And it's essentially the same problem 
as merging data in two different relational databases.  In the 
relational case, keys are used for identification, and it may be hard to 
  know that two keys represent the same thing.

Again, it may be that the processor would know before the query about 
the status of two nodes that may or may not represent the same resource, 
depending on what other information it has and how it has been designed. 
  But if you knew that the rdf processor wouldn't be figuring that out, 
  then you might have to write your query to determine the equivalence 
yourself.

And that brings us back to identifying properties and possibly using 
OWL-awareness, which would let a processor relate the two nodes.

Cheers,

Tom P

-- 
Thomas B. Passin
Explorer's Guide to the Semantic Web (Manning Books)
http://www.manning.com/catalog/view.php?book=passin
Received on Wednesday, 18 August 2004 04:02:52 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 5 February 2014 07:14:57 UTC