1

Consider that we are modeling a domain with the follwoing concepts: Maker which is a car producer, Model which is a specific model which hasMaker a specific unique Maker. And consider MakerExhibition which is a kind of exhibition that is done by a single Maker and could show multiple Model of this Maker:

Model, Maker, MakerExhibition 

hasMaker domain Model
hasMaker range Maker

Model subClassOf hasMaker exactly 1 Maker

hasExhibitionMaker domain MakerExhibition 
hasExhibitionMaker range Maker

hasExhibitionModel domain MakerExhibition 
hasExhibitionModel range Model

MakerExhibition subClassOf hasExhibitionMaker exactly 1 Maker

QUESTION: How to restrict (using DL or OWL syntax in Protege) that any Model that appears at at MakerExhibition through hasExhibitionModel must have the same MakerExhibition Maker?

For example, at a MakerExhibition for the Maker BMW, we cannot show a Model of the Maker Mercedes!

Median Hilal
  • 1,483
  • 9
  • 17

1 Answers1

1

QUESTION: How to restrict (using DL or OWL syntax in Protege) that any Model that appears at at MakerExhibition through hasExhibitionModel must have the same MakerExhibition Maker?

You want to be able to infer that if a model is shown at a maker exhibition for a particular maker, then that model has the same maker. That is, from

    ?model ←hasExhibitionModel ?exhibition →hasExhibitionMaker ?maker

you want to infer that

    ?model →hasMaker ?maker

You can do this using a subproperty axiom:

    (inverse hasExhibitionModel) • hasExhibitionMaker SubPropertyOf hasMaker

See the following questions for some more examples:

Community
  • 1
  • 1
Joshua Taylor
  • 84,998
  • 9
  • 154
  • 353
  • I need to **restrict**, **not to infer**. What you say is that if a `Model` appears at a `MakerExhibition`, then we *infer* that this `Model` has a `Maker` through `hasMaker` which is the same of the exhibition maker `hasExhibitionMaker`. While what I want is that if a `Model` appears at a `MakerExhibition`, then we *check* if this `Model` has a `Maker` through `hasMaker` which is the same of the exhibition maker `hasExhibitionMaker`, if this *check* is not true, then the ontology is inconsistent! – Median Hilal Jun 16 '16 at 08:56
  • 1
    @medianhilal in the question you said that the property should have *exactly* one value. This construction gives us the ability to over the value that the property must have. If someone also asserted something else, then the ontology becomes inconsistent. By inserting the correct value, any other value makes the ontology inconsistent. – Joshua Taylor Jun 16 '16 at 11:20
  • There are two points: 1. This way cannot be implemented in of-the-shelf current reasoners, because asserting cardinality restrictions on composite properties is not ok. As we have `Model subClassOf hasMaker exactly 1 Maker`, we cannot assert `(inverse hasExhibitionModel) • hasExhibitionMaker SubPropertyOf hasMaker`. Is there another way around while keeping those both ideas, but maybe using different assertions? – Median Hilal Jun 16 '16 at 13:54
  • 2. Let's consider that `Model subClassOf hasMaker exactly 1 Maker` doesn't exist, and there are no other cardinality restrictions on `hasMaker`, and let's try to find a solution to the same main question (or maybe I post a new question) – Median Hilal Jun 16 '16 at 13:55
  • I'm not sure whether you'll be able to get the behavior you want in that case. It's difficult to add "agreement" axioms in OWL, especially if the property isn't one where there *has* to be a value. It sounds like what you want is that *if* the model has a maker, then the maker has to agree with the exhibition's maker, but the model doesn't necessarily have to have a model. – Joshua Taylor Jun 16 '16 at 14:14
  • @MedianHilal You might be able to get something working with an `only Self` restriction, but I'm not optimistic. – Joshua Taylor Jun 16 '16 at 14:16
  • Could you please clarify a bit more how you intend to use `only self`? – Median Hilal Jun 16 '16 at 14:36
  • @MedianHilal You can write `Narcissist EquivalentClass Person and (likes only Self)` to define narcissist as equivalento persons that like only themselves. You *might* be able to do something like `Maker SubClassOf (newProperty only Self)` along with a subproperty chain axiom like `(inverse hasModelMaker) o (inverse hasExhibitionModel) o hasExhibitionMaker SubPropertyOf newProperty`. That says that if go from a maker mX to one of its models to an exhibition showing that model to the maker for the exhibition, mY, then newProperty(mX,mY). But since Maker newProperty only Self, then mX = mY. – Joshua Taylor Jun 16 '16 at 14:44