Search Mailing List Archives

Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-owl] Finding if A is the same type of individual as B

Martin O'Connor martin.oconnor at
Fri Aug 10 11:00:10 PDT 2007

Firstly, these questions cannot be answered in SWRL itself. SWRL is  
based on OWL DL so does not allow direct reasoning about classes. As a  
consequence, it does not allow the use of rdf:type in rules.

However, I have implemented sets of built-ins libraries that support  
both ABox and TBox queries in SWRL [1]. However, these libraries  
should only be used in SWRL queries [2] and should not be used to make  
inferences if you are concerned about formal safety.

So the rdf:type usage in Thomas' rules should be replaced by the  
abox:hasClass built-in; also, the individuals can be referred to  

abox:hasClass(invidualA1, ?c) ^ abox:hasClass(individualA2, ?c)

With the same open world caveat mentioned by Thomas, you can write:

abox:hasClass(individualA1, ?c1) ^ abox:hasClass(individualA2, ?c2) ^  
tbox:isDisjointWith(?c1, ?c2)



Quoting Thomas Russ <tar at ISI.EDU>:

> OK, I'll take a stab at these, although I must confess that I haven't
> really done any work with SWRL, so there may be some omissions and
> errors.
> On Aug 10, 2007, at 6:44 AM, Patil, Lalit wrote:
>> Hi,
>> I want to find out if the following could be represented in SWRL?
>> Given:
>> a. AClass, BClass are OWL concepts, such that BClass is subClassOf
>> AClass
>> b. individualA1, and individualA2 are instances of Aclass
>> c. individualB1, is instance of Bclass
>> Then:
>> Is there an SWRL property or a combination of properties that be
>> used to
>> determing if
>> 1. individualA1 and individualA2 are instances of the same class
> You should be able to check this easily by just using the same
> variable for the class of each one.   I think "rdf:type" is the
> appropriate relation (but I'm not completely sure).
>      rdf:type(?a1, ?c) ^ rdf:type(?a2, ?c)
>> 2. individualA1 and individual are instances of different classes
> This is a bit harder, especially if there are hierarchical relations
> between the classes.  Probably the best you can hope to do is to show
> that the individuals are members of disjoint classes?  Otherwise you
> start running into problems with open-world reasoning.
>     rdf:type(?i1, ?c1) ^ rdf:type(?i2, ?c2) ^ tbox:isDisjointWith(?
> c1, ?c2)
>> Currently, sameAs (differentFrom) helps in finding if individuals have
>> the same (different) identity. However, in the above case, the
>> identity
>> is different, but the similarity (or difference) is based on the
>> concept
>> from which it is instantiated.
>> Thanks,
>> Lalit Patil
>> _______________________________________________
>> protege-owl mailing list
>> protege-owl at
>> Instructions for unsubscribing:
>> faq.html#01a.03
> _______________________________________________
> protege-owl mailing list
> protege-owl at
> Instructions for unsubscribing:   

More information about the protege-owl mailing list