nemo-ufes / ufo-protege-plugin

A plugin for Protégé that checks gUFO-based ontologies for adherence to UFO rules
GNU General Public License v3.0
7 stars 2 forks source link

Implement rule: an instance of Kind cannot specialize another instance of Kind #4

Closed lcbarcellos closed 4 years ago

lcbarcellos commented 4 years ago

Rule

An instance of gufo:Kind cannot specialize another instance of gufo:Kind

Source

Third rule from Table 1 of paper Endurant Types in Ontology-Driven ConceptualModeling: Towards OntoUML 2.0, presented on page 13 of document.

From (t11), a class representing a kind cannot specialize another kind.

lcbarcellos commented 4 years ago

This constraint, along with the constraint imposed by #3 covers the one expressed in A modeling infrastructure for OntoUML, section 6.1, page 48, with another terminology:

Substance Sortal does not specialize Rigid Sortal A Substance Sortal cannot have a Rigid Sortal parent

context SubstanceSortal inv:
parents()->select( x | x.oclIsKindOf(RigidSortalClass) )->isEmpty()

A RigidSortalClass in the context of (CARRARETO, 2010) is a class which is instance of gufo:Kind or is instance of gufo:SubKind in the context of gUFO.

By stating that an instance of gufo:Kind cannot specialize another instance of gufo:Kind, we are already stating that a gufo:Kind cannot specialize gufo:SubKind as well, because of, as by #3, a gufo:SubKind must specialize gufo:Kind.

However, taking into account the transitive inheritance and the constraint from #3, maybe we could rewrite this rule as "An instance of gufo:Kind cannot specialize another instance of gufo:Sortal

@jpalmeida, any comments?

jpalmeida commented 4 years ago

I agree with your solution. An instance of ufo:Kind cannot specialize another instance of gufo:Sortal.