bug in writing functional syntax for classes that are disjoint with themselves

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

bug in writing functional syntax for classes that are disjoint with themselves

Peter Patel-Schneider
It appears that when Protege 4.3 writes out the functional syntax for classes
that are disjoint with themselves it incorrectly only puts the classname in
the DisjointClasses expression once.

For example,

     <owl:Class rdf:about="empty">
         <rdfs:label xml:lang="en">empty</rdfs:label>
         <owl:disjointWith rdf:resource="empty"/>
     </owl:Class>

produces

DisjointClasses(<http://sw.opencyc.org/concept/empty>)

instead of

DisjointClasses(<http://sw.opencyc.org/concept/empty><http://sw.opencyc.org/concept/empty>)

The output is not only semantically incorrect but is also illegal syntax.

This would only be a curiosity except that OpenCyc has a number of these
self-disjoint classes, including the purposefully empty class.


I eagerly await a fix so that I can perform reasoning over OpenCyc.

peter

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: bug in writing functional syntax for classes that are disjoint with themselves

Matthew Horridge-2
Administrator
Hi Peter,

This is actually due to the OWL API.  I’ve filed a bug report on the OWL API github tracker

https://github.com/owlcs/owlapi/issues/151


> This would only be a curiosity except that OpenCyc has a number of these self-disjoint classes, including the purposefully empty class.
>
>
> I eagerly await a fix so that I can perform reasoning over OpenCyc.

Yes :)  If the fix gets into the 3.5.0 release then it should make it into the next release of Protege.

Cheers,

Matthew
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: bug in writing functional syntax for classes that are disjoint with themselves

Pavel Klinov
In reply to this post by Peter Patel-Schneider
I suspect this won't be easy to fix. IIRC, the OWL API implements the
set semantics for the collection of arguments of DisjointClasses,
which isn't what the spec says. Fixing this in the OWL API will break
backward compatibility.

Cheers,

Pavel


On Fri, Apr 11, 2014 at 4:48 AM, Peter F. Patel-Schneider
<[hidden email]> wrote:

> It appears that when Protege 4.3 writes out the functional syntax for
> classes that are disjoint with themselves it incorrectly only puts the
> classname in the DisjointClasses expression once.
>
> For example,
>
>     <owl:Class rdf:about="empty">
>         <rdfs:label xml:lang="en">empty</rdfs:label>
>         <owl:disjointWith rdf:resource="empty"/>
>     </owl:Class>
>
> produces
>
> DisjointClasses(<http://sw.opencyc.org/concept/empty>)
>
> instead of
>
> DisjointClasses(<http://sw.opencyc.org/concept/empty><http://sw.opencyc.org/concept/empty>)
>
> The output is not only semantically incorrect but is also illegal syntax.
>
> This would only be a curiosity except that OpenCyc has a number of these
> self-disjoint classes, including the purposefully empty class.
>
>
> I eagerly await a fix so that I can perform reasoning over OpenCyc.
>
> peter
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: bug in writing functional syntax for classes that are disjoint with themselves

Patel-Schneider, Peter
It's not just DisjointClasses that incorrectly has a set as its argument.

peter

On Apr 11, 2014, at 12:49 AM, Pavel Klinov <[hidden email]>
 wrote:

> I suspect this won't be easy to fix. IIRC, the OWL API implements the
> set semantics for the collection of arguments of DisjointClasses,
> which isn't what the spec says. Fixing this in the OWL API will break
> backward compatibility.
>
> Cheers,
>
> Pavel
>
>
> On Fri, Apr 11, 2014 at 4:48 AM, Peter F. Patel-Schneider
> <[hidden email]> wrote:
>> It appears that when Protege 4.3 writes out the functional syntax for
>> classes that are disjoint with themselves it incorrectly only puts the
>> classname in the DisjointClasses expression once.
>>
>> For example,
>>
>>    <owl:Class rdf:about="empty">
>>        <rdfs:label xml:lang="en">empty</rdfs:label>
>>        <owl:disjointWith rdf:resource="empty"/>
>>    </owl:Class>
>>
>> produces
>>
>> DisjointClasses(<http://sw.opencyc.org/concept/empty>)
>>
>> instead of
>>
>> DisjointClasses(<http://sw.opencyc.org/concept/empty><http://sw.opencyc.org/concept/empty>)
>>
>> The output is not only semantically incorrect but is also illegal syntax.
>>
>> This would only be a curiosity except that OpenCyc has a number of these
>> self-disjoint classes, including the purposefully empty class.
>>
>>
>> I eagerly await a fix so that I can perform reasoning over OpenCyc.
>>
>> peter
>>
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: bug in writing functional syntax for classes that are disjoint with themselves

Patel-Schneider, Peter
It turns out that this is an issue in the OWL FS&SS document and a bug in the mapping from RDF triples into OWL.

I have sent an email into public-owl-comments detailing the issue.


A 99% cure is to change the mapping for triples like

x owl:disjointWith x

to

SubClassOf(x owl:Nothing)


I guess that the mapping is also done by the OWL API, but if it is in Protege code, you should probably make this change.


peter

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: bug in writing functional syntax for classes that are disjoint with themselves

Eric Prud'hommeaux
* Patel-Schneider, Peter <[hidden email]> [2014-04-11 21:30+0000]

> It turns out that this is an issue in the OWL FS&SS document and a bug in the mapping from RDF triples into OWL.
>
> I have sent an email into public-owl-comments detailing the issue.
>
>
> A 99% cure is to change the mapping for triples like
>
> x owl:disjointWith x
>
> to
>
> SubClassOf(x owl:Nothing)
>
>
> I guess that the mapping is also done by the OWL API, but if it is in Protege code, you should probably make this change.

Since there are other ways to say <X> is empty and other than this special case, the members of DisjointClasses are usefully treated as a set, DisjointClasses could simply be a set. This shifts the burden from implementations to users (as it already has in your case), but maybe that's more reallistic.


> peter
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

--
-ericP

office: +1.617.599.3509
mobile: +33.6.80.80.35.59

([hidden email])
Feel free to forward this message to any list for any purpose other than
email address distribution.

There are subtle nuances encoded in font variation and clever layout
which can only be seen by printing this message on high-clay paper.
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: bug in writing functional syntax for classes that are disjoint with themselves

Patel-Schneider, Peter
This is indeed a special case, but it does show up in at least one important ontololgy.  Moveover the OWL specification is in error here, and needs to be fixed.  The problem is that in some places the arguments to DisjointClasses are treated as a set and in other places they are not.

I'm not sure just what your proposal is.  Is it to say that x owl:disjointWith x is invalid syntax?

peter

On Apr 12, 2014, at 12:01 AM, Eric Prud'hommeaux <[hidden email]>
 wrote:

> * Patel-Schneider, Peter <[hidden email]> [2014-04-11 21:30+0000]
>> It turns out that this is an issue in the OWL FS&SS document and a bug in the mapping from RDF triples into OWL.
>>
>> I have sent an email into public-owl-comments detailing the issue.
>>
>>
>> A 99% cure is to change the mapping for triples like
>>
>> x owl:disjointWith x
>>
>> to
>>
>> SubClassOf(x owl:Nothing)
>>
>>
>> I guess that the mapping is also done by the OWL API, but if it is in Protege code, you should probably make this change.
>
> Since there are other ways to say <X> is empty and other than this special case, the members of DisjointClasses are usefully treated as a set, DisjointClasses could simply be a set. This shifts the burden from implementations to users (as it already has in your case), but maybe that's more reallistic.
>
>
>> peter
>>
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
> --
> -ericP
>
> office: +1.617.599.3509
> mobile: +33.6.80.80.35.59
>
> ([hidden email])
> Feel free to forward this message to any list for any purpose other than
> email address distribution.
>
> There are subtle nuances encoded in font variation and clever layout
> which can only be seen by printing this message on high-clay paper.
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user