Re: ISSUE-3: REPORTED: Lack of anonymous individuals

Boris and I are in strong agreement overall.

I have a few tweaks that are friendly amendments....

On 27 Nov 2007, at 19:56, Boris Motik wrote:
[snip]
> - The users of OWL 1.1 DL never ask queries containing ABoxes that  
> contain anonymous individuals. If some form of querying is
> required, people use some explicit query language.

I'm confused by this point. I certainly expect them to query (using  
sparql) ABoxes containing anonymous *individuals* (aka, skolem  
constants). Did you mean that they don't write queries *as ABoxes?*  
That's very true.

My experience is that users expect bnode labels (even if gensym-ed)  
to show up in classification/realization results, bindings to  
queries, etc....pretty much the way they do in RDF.

Generally, I do not find users who think of Bnodes as sugar for  
existentials. There are some cases where leaning a graph *does*  
occur, but these are typically in fairly specific contexts where  
there is extra information about the redundancy.

> - No OWL DL parser (to my knowledge at least) actually checks  
> whether the anonymous individuals are really tree-like or not.

More importantly, the validators don't (see my test case below [1])

[snip]
> Therefore, a viable option might really be to either
>
> - drop anonymous individuals explicitly in OWL 1.1 DL (and perhaps  
> say in some note that such individuals can be dealt with for all
> practical intents and purposes by Skolemization), or

I find manual Skolemization to be a bit of a non-starter. People  
migrating from RDF use BNodes rather freely, so I imagine pellet (for  
example) will always have a mode wherein it treats them as skolem  
constants. I also imagine that this will be the default setting.  
Furthermore, that's certainly how I propose to deal with them when  
querying with SPARQL/OWL.

> - allow for arbitrary individuals in the ABox, but treat them as  
> Skolem constants.

Yay! Drinks all around.

Note that this is, I believe, pretty close to saying that we support  
the "if" but not the "only if" half of the equivalence between Bnodes  
and someValuesFrom constructions. But we cover far more patterns and  
in a user intuitive way that ups our compatibility with RDF in the  
field. Big Wins!

> Regardless of which of these two solutions we pick, we are going to  
> get much closer to what the implementations are supporting and
> what the users really need. Thus, such a solution is bound to be of  
> higher practical value than adding some complex restriction on
> anonymous individuals being necessarily tree-like. In a way, this  
> justifies the reason for developing OWL 1.1 DL in the first place.
> Technically speaking, such a specification would be backwards  
> incompatible;

One could always opt in for the full equivalence. And if there is an  
undecidable superset of what DL reasoners expect to handle anyway,  
one could always let bnodes *there* be full existentially quantified  
variables. We'd just have readjusted how the decidable subset works.

> however, practically speaking, nobody will care, so this
> is at best an academic issue.

And I predict they will care, loudly, if we force a variable reading  
on it. It's a non-starter for implementations I work on, by and  
large, except as a non-default mode to show people why they don't  
want it. :)

Another way to put this is that while it might be slightly  
incompatible with prior specs, it is far more compatible with  
practice both existing and, I would argue, "good".

Cheers,
Bijan.


[1] -------- Validates as OWL DL/Lite in the wonder web validator and  
Pellet web form
<?xml version="1.0"?>

<rdf:RDF xmlns="http://www.cs.man.ac.uk/~bparsia/ontologies/ 
Ontology1196083056850.owl#"
      xml:base="http://www.cs.man.ac.uk/~bparsia/ontologies/ 
Ontology1196083056850.owl"
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:owl="http://www.w3.org/2002/07/owl#">
     <owl:Ontology rdf:about=""/>

     <owl:ObjectProperty rdf:about="#p"/>

     <owl:Thing rdf:about="#x">
         <p rdf:resource="#y"/>
     </owl:Thing>

     <owl:Thing rdf:about="#y">
         <p rdf:resource="#z"/>
     </owl:Thing>

     <owl:Thing rdf:about="#z">
         <p rdf:resource="#x"/>
     </owl:Thing>

</rdf:RDF>

Received on Tuesday, 27 November 2007 20:26:04 UTC