Search Mailing List Archives


Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-owl] Phantom class

Timothy Redmond tredmond at stanford.edu
Thu Oct 2 12:54:42 PDT 2008


The ontology is problematic on several fronts and will probably give  
many tools problems.  It is valid as an owl full ontology but not as  
owl 1.0 nor owl 2.0.

So first of all the Rules resource is a three way pun.  It is first  
declared as a class, then used as a datatype property and finally  
there is an malformed restriction that might suggest that it is an  
object property.  Protege 3 cannot handle this type of punning.

The malformed restriction in question is

       <owl:Restriction>
         <owl:onProperty rdf:resource="#Rules"/>
         <owl:allValuesFrom rdf:resource="#Rules" />
         <owl:maxCardinality rdf:datatype="#Rules">1</ 
owl:maxCardinality>
       </owl:Restriction>

This is not valid as owl 1.0 dl nor as owl 2.0.  It seems possible  
that what you wanted here was the owl 2.0 qualified cardinality  
restriction which I think would be represented as

       <owl11:ObjectRestriction>
         <owl:onProperty rdf:resource="#Rules"/>
         <owl:onClass rdf:resource="#Rules" />
         <owl:maxCardinality rdf:datatype="#Rules">1</ 
owl:maxCardinality>
       </owl11:ObjectRestriction>

In addition, I think that the restriction

      <rdfs:subClassOf>
        <owl:Restriction>
          <owl:onProperty rdf:resource="#Rules"/>
          <owl:allValuesFrom rdf:resource="&xsd;string" />
        </owl:Restriction>
      </rdfs:subClassOf>

is still ambiguous because it is not clear whether the restriction is  
a datatype or object restriction.  The owl 2.0 specification [1]  
cleverly resolves this by requiring that you use

      <rdfs:subClassOf>
        <owl11:DataRestriction>
          <owl:onProperty rdf:resource="#Rules"/>
          <owl:allValuesFrom rdf:resource="&xsd;string" />
        </owl11:DataRestriction>
      </rdfs:subClassOf>

But this construct (while valid as owl 1.0 full) will not have the  
desired meaning in owl 1.0.  But it doesn't look like Protege 4  
handles this owl 2.0 construct yet so this can't yet be used in  
Protege 4.

-Timothy


[1] http://www.w3.org/TR/owl2-mapping-to-rdf/


On Oct 1, 2008, at 12:50 AM, Dmitry Repchevsky wrote:

> Hello!
>
> I have an ontology (here is a test) where I get a "phantom" class.
>
> here it is:
>
> ************************************************************
> <?xml version='1.0' encoding='ISO-8859-1'?>
>
> <!DOCTYPE rdf:RDF [
>    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
>    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
>    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
>    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
> ]>
>
> <rdf:RDF
>    xml:base="http://nemus.org/datatypes.owl"
>    xmlns="http://nemus.org"
>    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
>    xmlns:owl="http://www.w3.org/2002/07/owl#"
>    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
>
>  <owl:Class
>    rdf:ID="Rules"
>    rdfs:label="Rules">
>
>     <rdfs:subClassOf>
>       <owl:Restriction>
>         <owl:onProperty rdf:resource="#Rules"/>
>         <owl:allValuesFrom rdf:resource="&xsd;string" />
>       </owl:Restriction>
>     </rdfs:subClassOf>
>
>    <owl:disjointWith rdf:resource="#PrositeMotif"/>
>
>  </owl:Class>
>
>  <owl:DatatypeProperty rdf:about="#Rules" >
>     <rdfs:domain rdf:resource="#Rules"/>
>     <rdfs:range rdf:resource="&xsd;string"/>
>  </owl:DatatypeProperty>
>
>  <owl:Class
>    rdf:ID="PrositeMotif"
>    rdfs:label="PrositeMotif">
>
>     <rdfs:subClassOf>
>       <owl:Restriction>
>         <owl:onProperty rdf:resource="#Rules"/>
>         <owl:allValuesFrom rdf:resource="#Rules" />
>         <owl:maxCardinality rdf:datatype="#Rules">1</ 
> owl:maxCardinality>
>       </owl:Restriction>
>     </rdfs:subClassOf>
>
>     <owl:disjointWith rdf:resource="#Rules"/>
>  </owl:Class>
>
>  <owl:ObjectProperty rdf:about="#Rules" >
>     <rdfs:domain rdf:resource="#PrositeMotif"/>
>     <rdfs:range rdf:resource="#Rules"/>
>  </owl:ObjectProperty>
>
> </rdf:RDF>
>
> ************************************************************
>
> So apart of "PrositeMotif" and "Rules" classes I got strange "string"
> class in Protege 4 (101) which inherits from "Thing".
> [Class Usage] for "string" says: "Rules subclass of Rules only  
> string".
>
> Is this a bug in Protege?
>
> Thank you in advance,
>
> Dmitry
> _______________________________________________
> protege-owl mailing list
> protege-owl at lists.stanford.edu
> https://mailman.stanford.edu/mailman/listinfo/protege-owl
>
> Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03




More information about the protege-owl mailing list