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 stanford.edu
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  
directly:

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)

Martin

[1] http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuiltInLibraries
[2] http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns

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 lists.stanford.edu
>> https://mailman.stanford.edu/mailman/listinfo/protege-owl
>>
>> Instructions for unsubscribing: http://protege.stanford.edu/doc/
>> faq.html#01a.03
>
> _______________________________________________
> protege-owl mailing list
> protege-owl at lists.stanford.edu
> https://mailman.stanford.edu/mailman/listinfo/protege-owl
>
> Instructions for unsubscribing:   
> http://protege.stanford.edu/doc/faq.html#01a.03
>





More information about the protege-owl mailing list