W3C home > Mailing lists > Public > public-owl-wg@w3.org > January 2008

Re: Action-67 some examples on b-nodes issues and their impact on users

From: Bijan Parsia <bparsia@cs.man.ac.uk>
Date: Wed, 23 Jan 2008 10:37:21 +0000
Message-Id: <5A9FC13A-7B03-452D-B655-55493727A5B1@cs.man.ac.uk>
To: OWL Working Group WG <public-owl-wg@w3.org>

Let me present a slightly different perspective on the impact on users.

A user makes the following RDF graph test and tries to process it  
with Pellet:
G: _:x p _:y. _:y p _:x.

User(U): Pellet's broken! It can't handle my simple test G!
Bijan(B): Did you have species validation on? You'll find that that's  
OWLFull
U: OWL Full? Why! It's just RDF with no OWL at all!
B: BNodes...variable interpretation...[600 lines with  
examples]...undecidable....queries...see my presentation, blog post,  
email thread and these 17 papers
U: So OWL DL is broken?
B: No, blha blahll...
U: So I can *never* use BNodes? But I have to in restrictions.
B: Translation...syntax...[900 lines]...
U: Ok, so I can *only* use BNodes in syntax.
B: No, you can use tree like patterns in the ABox.
U: Tree like?
B: Yes, e.g., x p _:y. _:y p _:z. (and that last could be z). But  
you're probably better off without bnodes at all...
U: YAY! BNODES

Then user creates another test case
G': x p _:y. _:y. _:y p _:z.
      MyClass subClassOf [a Restriction; someValuesFrom Thing;  
onProperty p]

U: Pellet's broken! When I classify G', I get that x rdf:type  
MyClass, but not _:y!
B: _:y is a BNode.
U: But you said I could use bnodes! It species validates.
B: Yes, but remember bnodes are variables and they have restricted  
scope. Think of bnodes in answers to sparql queries.
U: Oh, you mean I should see _:G12 or some gensym.
B: No.
U: Why not?!?!?!? Pellet's broken!
B: Think of it this way, what you wrote is a notational variant of:
	x rdf:type [ onProperty p; someValuesFrom [ onProperty p;  
someValuesFrom]].
U: Right, I can replace the node label with [].
B: Uhm...no. See the [] Bnode is a *syntax* bnode, Ok?
U: Ok.
B: But the *someValuesFrom* is replacing your _:y and _:z. If you  
were just replacing the labels, it'd be x p [p []].
U: ....
B: So just as you wouldn't expect to see a label in the class tree  
off the somevaluesfrom, you shouldn't with the bnode.
U: ...
B: I can back this all up from the specs!
U: ...
B: Is that a knife in your hand, or you just happy to stab me?
U: ...
B: We have a switch in Pellet that Does The Better Thing. Use it.
U: Thank you. Please make that switch being on the default.

This is a bit of an abstraction of Many Many conversations I've  
had :) Except without the knives, and usually a heck of a lot more  
disparagement of Bnodes as variables from me.

Cheers,
Bijan.
Received on Wednesday, 23 January 2008 10:35:38 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 23 January 2008 10:35:40 GMT