JPL-IMCE / gov.nasa.jpl.imce.ontologies.public

JPL's IMCE ontologies for Model-Based Systems Engineering
19 stars 2 forks source link

Anonymous inverse property #21

Open milnor11 opened 7 years ago

milnor11 commented 7 years ago

I have been looking at the ‘project’ ontology (http://imce.jpl.nasa.gov/foundation/project/project), and I am having trouble with the following construct:

<!-- http://imce.jpl.nasa.gov/foundation/project/project#hasDeliversTarget -->

<owl:ObjectProperty rdf:about="&project;hasDeliversTarget">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
    <rdfs:subPropertyOf rdf:resource="&project-backbone;topReifiedObjectPropertyTarget"/>
    <rdfs:range rdf:resource="&project;Deliverable"/>
    <rdfs:domain rdf:resource="&project;Delivers"/>
</owl:ObjectProperty>
<rdf:Description>
    <owl:inverseOf rdf:resource="&project;hasDeliversTarget"/>
</rdf:Description>

When I load this in protégé, I see the following image:

anonymous inverse

I am failing to understand the usefulness of the anonymous inverse. Could you please provide insight into the purpose of it? Thanks.

NicolasRouquette commented 7 years ago

There are two different factors involved in this issue:

1) RDF/XML serialization produced by the owlapi

In version 1.2.0, the OWL files were edited in a version of Protege based on the OWLAPI version 3.4.2. (the owlapi version is shown in a comment at the end of the file).

With Protege 5.2.0 based on the OWLAPI version 4.2.8, the same object property is serialized differently:

    <!-- http://imce.jpl.nasa.gov/foundation/project/project#hasDeliversTarget -->

    <owl:ObjectProperty rdf:about="http://imce.jpl.nasa.gov/foundation/project/project#hasDeliversTarget">
        <rdfs:subPropertyOf rdf:resource="http://imce.jpl.nasa.gov/backbone/imce.jpl.nasa.gov/foundation/project/project#topReifiedObjectPropertyTarget"/>
        <owl:inverseOf>
            <rdf:Description>
                <owl:inverseOf rdf:resource="http://imce.jpl.nasa.gov/foundation/project/project#hasDeliversTarget"/>
            </rdf:Description>
        </owl:inverseOf>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/>
        <rdfs:domain rdf:resource="http://imce.jpl.nasa.gov/foundation/project/project#Delivers"/>
        <rdfs:range rdf:resource="http://imce.jpl.nasa.gov/foundation/project/project#Deliverable"/>
    </owl:ObjectProperty>

or, in OWL functional syntax:

InverseObjectProperties(project:hasDeliversTarget ObjectInverseOf(project:hasDeliversTarget))

Basically, this says that project:hasDeliversTarget is equivalent to the inverse of its inverse. This is consistent with the fact that the object property is both functional and inverse functional.

2) Should this axiom be in the ontology in the first place?

No. We'll remove it and others like it. Thanks for catching this!