Let's say we have two classes named People
and Disease
. These classes are related by the Object Property has
.
:People :has :Disease
People
has subclass (or individual) John
, and Disease
has subclass (or individual) Cancer
.
:John a :People
:Cancer a :Disease
How can we get the relationship between these subclasses by inference?
:John :has :Cancer
Before you can get to an answer, there are a number of misconceptions you'll need to resolve.
First, subclass and individual are very different concepts. Individuals (instances) are members of classes. Subclass denotes a class is a subset of another class, meaning that an implication (via inference) is that all members of a subclass are members of the (super)class. (Just for reference: there is no concept of inheritance in OWL.)
Second class-level properties, such as
:People :has :Disease
have no meaning for class individuals. The way to define a property's relationships to classes is to set the domain and range of the property. (Just using:has
as a property name indicates a wide set of misconceptions, possibly from other types of languages.) So I'd suggest the name:hasDisease
and the assertions:Third, you can assert that
:John :hasDisease :Cancer
and infer that John has a disease, given that:Cancer
is a subclass of:Disease
. This requires a standard RDFS reasoner. Also, given the domain and range definitions above, and an assertion:Joy :hasDisease :Gout
, an RDFS reasoner will infer that:Joy a :Person
and:Gout a :Disease
.There are a few OWL primers out there that you can find via Google. I'd suggest going over some of these to get a basic understanding of how OWL and reasoning profiles work.