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.