- 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