简体   繁体   中英

Basic owl reasoning using Jena

I'm new to ontologies and have a basic question about OWL reasoning. The question may seem long winded, sorry about that..

Consider an ontology with the following axioms (owl:class C1) and (owl:class P), with an object property (rdfs:domain observes C1)(rdfs:range observes P), along with an individual (rdf:type p P)

I then restrict the class C1 by creating a class C2 (rdfs:subClassOf C2 C1) with the restriction (observes C2 p)

Now when I then create a new individual (rdf:type x owl:Thing) (observes xp), then the reasoner infers that (rdf:type x C1). However, the definition of the individual x seems more close to C2 so should the reasoner not infer that x is of type C2?

Please help!

I'm experimenting using the Jena framework.

The reason this doesn't happen is that you have created your restriction using a subclass, which means you have created a necessary (but not sufficient) condition. Put in other words, you have said this to the reasoner:

"IF an individual is of type C2, THEN it must have a property 'observes'"

But you have not said it the other way around:

"IF an individual has a property 'observes', THEN it must be of type C2"

In order for the reasoner to be able to infer that your individal is of type C2, you must have the second rule (the sufficient condition) there as well. You can do this in OWL by using an owl:equivalentClass relation on your restriction (instead of a rdfs:subClassOf relation).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM