- From: Mark Wallace <mwallace@modusoperandi.com>
- Date: Thu, 17 Mar 2011 10:37:57 -0400
- To: Hugh Glaser <hg@ecs.soton.ac.uk>
- CC: Alan Ruttenberg <alanruttenberg@gmail.com>, Reto Bachmann-Gmuer <reto.bachmann@trialox.org>, Pat Hayes <phayes@ihmc.us>, Ivan Shmakov <oneingray@gmail.com>, Ivan Shmakov <ivan@main.uusia.org>, "<semantic-web@w3.org>" <semantic-web@w3.org>
- Message-ID: <4D821CC5.1080202@modusoperandi.com>
On 3/17/2011 6:34 AM, Hugh Glaser wrote:
> If I take a graph of any kind and use a particular serialisation method, and communicate that somewhere else, and then de-serialise, do I end up with the same graph?
> For most serialisations, the answer will be "no".
(Daring with trepidation to enter these waters... :-) )
I would think the opposite would be true. I understand that RDF is
first and foremost a graph model, independent of serialization. Given
that, I would expect that for most serializations, the pre-serialized
and post-serialized versions of the graph (i.e., in memory) would be the
same. The *serializations* would not be the same, but shouldn't the
*logical graph model* be the same? Isn't that the point of the RDF spec
separating serialization from logical model?
E.g. with Jena, given this file (test.ttl)
@prefix : <http://example.com/demo#> .
:joe :has [ a :dog ] .
I serialize it as RDF-XML:
C> java jena.rdfcat test.ttl
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://example.com/demo#">
<rdf:Description rdf:about="http://example.com/demo#joe">
<has>
<dog/>
</has>
</rdf:Description>
</rdf:RDF>
Or I serialize it as N-Triples:
C> java jena.rdfcat -out ntriple test.ttl
<http://example.com/demo#joe> <http://example.com/demo#has>
_:A113e01ecX3aX12ec4399200X3aXX2dX8000 .
_:A113e01ecX3aX12ec4399200X3aXX2dX8000
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://example.com/demo#dog> .
Or I serialize it as N-Triples and then de-serialize that back into
memory in order to de-serialize it as RDF-XML:
C> java jena.rdfcat -out ntriple test.ttl | java jena.rdfcat -out
xml -n -
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:j.0="http://example.com/demo#" >
<rdf:Description rdf:about="http://example.com/demo#joe">
<j.0:has rdf:nodeID="A0"/>
</rdf:Description>
<rdf:Description rdf:nodeID="A0">
<rdf:type rdf:resource="http://example.com/demo#dog"/>
</rdf:Description>
</rdf:RDF>
I do all that and then pipe it back to N-Triples again:
C> java jena.rdfcat -out ntriple test.ttl | java jena.rdfcat -out
xml -n - | java jena.rdfcat -out ntriple -x -
<http://example.com/demo#joe> <http://example.com/demo#has>
_:AX2dX59ad73bbX3aX12ec43a94a9X3aXX2dX8000 .
_:AX2dX59ad73bbX3aX12ec43a94a9X3aXX2dX8000
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://example.com/demo#dog> .
Yes the serializations all differ, but the graph represented is the
same. Right?
-Mark
Received on Thursday, 17 March 2011 14:38:32 UTC