- From: Sean Bechhofer <seanb@cs.man.ac.uk>
- Date: Mon, 12 Jan 2004 17:51:20 +0000
- To: Brian Manley <bmanley@granite.com>
- Cc: public-webont-comments@w3.org
Brian Manley wrote:
> All,
>
> Can a class instance change it's class membership by changing the
> value of its properties?
>
> In my ontology I have the following definitions ( excuse my typos ):
>
> <owl:Class rdf:ID="Student"/>
>
> <owl:ObjectProperty rdf:ID="hasGrade">
> <rdfs:domain rdf:resource="#Student"/>
> <rdfs:range rdf:resource="#Grade"/>
> </owl:ObjectProperty>
>
> <owl:Class rdf:ID="FailedStudent">
> <rdfs:subClassOf rdf:resource="#Student"/>
> <rdfs:subClassOf>
> <owl:Restriction>
> </owl:onProperty rdf:resource="#hasGrade"/>
> </owl:hasValue rdf:resource="#Failed"/>
> </owl:Restriction>
> </owl:subClassOf>
> </owl:Class>
>
> I'll omit the definition of "Grade" and friends for the sake of brevity...
>
> Now, suppose I define:
>
> <Student rdf:ID="Brian">
> <hasGrade rdf:resource="#Failed"/>
> </Student>
>
> Is my instance, based on the value of the "hasGrade" property, a "FailedStudent"
> or just a "Student"? Why ( not )?
Brian
In this particular example, the only thing we know about Brian is that
he's a Student. The reason for this however is, I suspect, not the
reason that you expect. Your ontology defines two classes:
Class(Student partial)
Class(FailedStudent partial)
SubClassOf(FailedStudent Student)
SubClassOf(FailedStudent restriction(hasGrade hasValue Failed))
(I use the abstract syntax here rather than RDF as I think it helps to
clarify things). What this actually says is that FailedStudent is a
subclass of Student and any FailedStudents must have grade Failed. It
does *not*, however, tell us that a student with a Failed grade is a
FailedStudent, because we only have *subclass* assertions. Thus having a
Failed grade is a necessary condition of being a failed student, but it
is not sufficient (see some earlier discussions about this topic [1]).
If we had actually said:
Class(Student partial)
Class(FailedStudent complete
Student
restriction(hasGrade hasValue Failed))
In other words, FailedStudent is defined to be *equivalent* to a Student
with a grade Failed, then it *would* be the case that a reasoner can
legitimately make the inference that Brian is a FailedStudent.
So two lessons here;
1) We have to be careful about the distinction between subclass and
equivalent class.
2) The classification of an instance *can* change through description of
its properties.
{Note also though that due to the mononotonic nature of reasoning in
Description Logics, if we add further information to the description of
an instance, we cannot stop it from being an instance of a class if it
already was -- we can only add to the classes that it is an instance of.
So there is nothing we can say about Brian that stops him being an
instance of Student (without necessarily introducing some inconsistency
into the ontology). But that's perhaps best left for another day :-)}
Cheers,
Sean
[1] http://lists.w3.org/Archives/Public/www-webont-wg/2004Jan/0015.html
--
Sean Bechhofer
seanb@cs.man.ac.uk
http://www.cs.man.ac.uk/~seanb
Received on Monday, 12 January 2004 12:52:17 UTC