Re: Why skolemization?

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