W3C home > Mailing lists > Public > semantic-web@w3.org > October 2010

Re: Is there a systematic method for naming bnodes?

From: Nathan <nathan@webr3.org>
Date: Sat, 09 Oct 2010 20:37:17 +0100
Message-ID: <4CB0C46D.3070902@webr3.org>
To: Melvin Carvalho <melvincarvalho@gmail.com>
CC: Semantic Web <semantic-web@w3.org>, Pat Hayes <phayes@ihmc.us>
Hi Melvin:)

Perhaps I can help a little on this one

Melvin Carvalho wrote:
> Three problems come to mind:
> 
> One problem is the canonicalization of RDF seriealizations, and hence,
> ability to sign it with DSIG.  It seems quite hard to canonicalize
> bnodes, right now.

yup you'd have to come up with a special rule set for canonicalizing 
BlankNodes - it's the same problem you get when serializing objects 
which are references in OO land - could be addressed with a free day or 
two :)

> Another is referring to data in another graph, say I wanted to
> annotate, access control, transform etc.

these use cases all need looked at separately, but the short answer is 
there's two approaches - the first is to work on the resource / 'HTTP 
document' level and: handle access control at a per HTTP resource level 
(how we already do it) - to handle transformation again you need to 
leverage HTTP headers (Link) to specify the transformation rules, or to 
work on a media type level where X transformation set is for Y media type.

As for annotation then there are two ways to do it, one is to again work 
at resource level:

   <http://example.org/my-doc> a :Document;
     dc:creator :me;
     dc:created "2010-10-09T20:29:30Z" .

You can put that in any graph, the problem though is that your 
referencing the 'current state' of a resource/graph, in that if the 
contents of http://example.org/my-doc change then what you've said about 
it may not still be correct - like saying that I created $var where $var 
can change at any time.

The way around this is to either sign the full resource (the http 
packet) not so nice, or to use graph literals (aka quoted graphs) and 
annotate that, this way the statements you are talking about (the 
triples) are embedded within the full statement you are making so can't 
change temporally.

   { ... bunch of triples... } dc:creator :me ;
    dc:created "2010-10-09T20:29:30Z" ;
    a :Truth .

> Another that I was personally trying to solve was an easy way to diff
> elements in a triple store cross domain, e.g. for sync purpose

I've had a good stab at this a couple of times, but came to the 
conclusion that again this requires graph literals / quoted graphs as 
per http://www.w3.org/DesignIssues/Diff

In other words, you're hitting all the reasons I found I needed N3 (or 
at least turtle + graphs like AIR does) to handle these situations.

Best,

Nathan
Received on Saturday, 9 October 2010 19:38:37 UTC

This archive was generated by hypermail 2.4.0 : Tuesday, 5 July 2022 08:45:20 UTC