Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OWL: Why can't a Data Property be a InverseFunctionalProperty?

I am trying to create an OWL ontology using Protege. I want to use inverse functional properties as a resemblance for primary keys from relational databases. For example, I have a property, that has a unique id as object, thus identifying the entity and no other entity should be allowed to use this value with that property.

As the object value is a string, it has to be a data property. But in Protege, you cannot assign the Inverse functional characteristic to a data property.

Why can't I declare a data property to be a inverse functional property and how else should I create the "unique key" logic if not like this?

Thanks in advance,
Frank

like image 783
Aaginor Avatar asked Oct 20 '25 12:10

Aaginor


1 Answers

The restriction on datatype properties is purely due to computational complexity. Without the restriction, the logic of OWL 2 DL would not be decidable. However, it is possible to express a notion of unique key in OWL 2:

ex:key  a  owl:DatatypeProperty .
owl:Thing  owl:hasKey  ( ex:key ) .

However, there is a subtle difference between this and an inverse functional property. Consider the following:

ex:this  a  [
    a  owl:Restriction;
    owl:onProperty  ex:prop;
    owl:minCardinality  2;
    owl:onClass  [
        a  owl:Restriction;
        owl:onProperty  ex:key;
        owl:hasValue  1
    ]
] .

If ex:key is a key for owl:Thing, then this ontology is consistent. However, if ex:key could be an inverse functional property, then this ontology would not be consistent. The reason is due to the way keys work in OWL 2. For a key to identify something, the thing has to be named explicitly. There could be several unnamed things having the same key (here, the key is the number 1) and yet, they would not be considered equal as long as they are not declared explicitly in the ontology. However, with inverse functional property, it is not the case. As a result, we would be able to infer that everything having value 1 on property ex:key is the same thing, and therefore, ex:this cannot have 2 values for the property ex:prop.

like image 175
Antoine Zimmermann Avatar answered Oct 23 '25 08:10

Antoine Zimmermann



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!