- From: Steve Harris <steve.harris@garlik.com>
- Date: Sat, 26 Mar 2011 22:47:53 +0000
- To: nathan@webr3.org
- Cc: Sandro Hawke <sandro@w3.org>, semantic-web@w3.org
On 2011-03-26, at 16:06, Nathan wrote:
> Sandro Hawke wrote:
>> Skolemization.
>
> Sorry, but can somebody clarify why we, or RDF, needs Skolemization? Is this to cover a data management problem particular to a certain way of storing RDF data?
To make it possible to deal with bNodes when you can't pull the entire graph into memory.
Suppose you get a subgraph (via a Linked Data server / API / SPARQL DESCRIBE or similar) which looks like:
<alice> foaf:name "Alice Smith" ;
foaf:mbox <mailto:alice@smith.example> ;
foaf:knows _:b12, _:b13, _:b14 .
You like to know more about _:b12 etc., but there's no way to ask that question - you can't pass an unskolemised bNode into an API, because it's just an existential variable.
If, OTOH, you requested
http://foaf.example/id/alice, and got:
<alice> foaf:name "Alice Smith" ;
foaf:mbox <mailto:alice@smith.example> ;
foaf:knows <b12>, <b13>, <b14> .
You could then request http://foaf.example/id/b12, and legitimately expect something back.
With a dedicated URI scheme, e.g. tag:something or bnode:, then you need some convention about how to request more data (except in SPARQL-based APIs, where it's implicit), but it has the advantage that the consumer can tell that it was a bNode before skolemisation.
- Steve
--
Steve Harris, CTO, Garlik Limited
1-3 Halford Road, Richmond, TW10 6AW, UK
+44 20 8439 8203 http://www.garlik.com/
Registered in England and Wales 535 7233 VAT # 849 0517 11
Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD
Received on Saturday, 26 March 2011 22:48:29 UTC