1

I have read this article and got an additional question about this topic:

Is it possible to define a class property for every individual of the domain and the range class? Like a property value that points to a class or some special only condition.

Regarding the milkbottle example: I have this class hierarchy

Manufacturer
-> Milk_Manufacturer
Product
-> Milk_Bottle

Milk_Manufacturer has the individuals manufacturer_1 and manufacturer_2
Milk_Bottle has the individuals bottle_1 and bottle_2

Is it possible to define a property Milk_Bottle isProducedBy Milk_Manufacturer which says that every individual Milk_Bottle can be produced by every individual Milk_Manufacturer? A reasoner should be able to infer all the properties for the individuals afterwards.

If I add a manufacturer_3 and synchronize I want the reasoner to add the property to both bottles and if I add a bottle_3 it should have properties to all manufacturers

Community
  • 1
  • 1
John Doe
  • 41
  • 5
  • in OWL 2 the universal property `owl:topObjectProperty` is supposed to connect each pair of individual. But for your need I think an SWRL rule is necessary: `Milk_Bottle(?x), Milk_Manufacturer(?y) -> isProducedBy(?x, ?y)`. What you want is also known as **concept product** in http://korrekt.org/papers/RudolphKroetzschHitzer_DL-Concept-Product_TR_2008.pdf – UninformedUser Apr 27 '17 at 09:41
  • As a workaround, you can use Description Logic rules: `Milk_Bottle SubClassOf R_1 Self, Milk_Manufacturer SubClassOf R_2 Self, isProducedBy SubPropertyChain R_1 o U o R_2` (everything in Manchester Syntax) – UninformedUser Apr 27 '17 at 09:52
  • I've seen that you edited your question. Have you read my second comment? It provided OWL axioms for your answer. Otherwise, you can also use the SWRL rule from my first comment. Pellet reasoner for instance supports SWRL – UninformedUser Apr 27 '17 at 19:49
  • Yes, thank you. I just edited the title so that people can find it if they are looking for the concept product problem. I came to the same solution as you stated in your first answer. HermiT would be an alternative for the reasoner but I use Pellet because for my ontology it has way better performance (using Protege). – John Doe Apr 30 '17 at 17:32
  • Right, if the SWRL rule works, feel free to provide an answer here for future reference and others having the same problem. And don't forget to "accept" your answer. Cheers. – UninformedUser May 01 '17 at 12:26

1 Answers1

0

There are two ways of applying a concept product role:

  • a SWRL rule: Milk_Bottle(?x), Milk_Manufacturer(?y) -> isProducedBy(?x, ?y)

  • a Description Logic rule: Milk_Bottle SubClassOf R_1 Self, Milk_Manufacturer SubClassOf R_2 Self, isProducedBy SubPropertyChain R_1 o U o R_2

Credits to AKSW for the answer

John Doe
  • 41
  • 5