So I was reading this and it says:
As an example of a necessary and sufficient condition, take a look at the following definition:
:RedThing a owl:Class ; owl:equivalentClass [ a owl:Restriction ; owl:onProperty :color ; owl:hasValue red^^<http://www.w3.org/2001/XMLSchema#string> ]
What I interpret this to mean is that if something is red, then that thing must be a RedThing
.Also, if something is a RedThing
, then it must be the color red.
When I added this code snippet to Protege, and I write:
:test_subject :color red^^<http://www.w3.org/2001/XMLSchema#string>
Then the following is inferred by the reasoner:
:test_subject rdf:type :RedThing
What this covers is the necessary part of the restriction definition, i.e. if something is red, then that thing must be a RedThing
.
When I add the following to an ontology (again using Protege):
test_subject_2 rdf:type :RedThing
Then the following SHOULD be inferred by the reasoner:
:test_subject_2 :color red^^<http://www.w3.org/2001/XMLSchema#string>
Because this is the sufficient part of the condition. i.e if something is a RedThing
, then it must be the color red.
BUT it is NOT inferred. What am I missing here?