[Pellet-users] Nominals in DL-safe Rules

Paolo Bussotti paolo.bussotti at unifi.it
Fri Mar 2 09:58:28 UTC 2007


Hi everybody,
I've tried to use dl-safe rules with nominals, but it seems it doesn't 
work (it enters an infinite loop until I got an out-of-memory 
exception). However, when I substitute the enumeration class with a 
simple class which  has  the same instances, then it works.
Is it correct?. For example if  I define a rule (here in datalog):

     hasStandardTitle(?u,?title) :- User(?u), Education(?edu), 
Title(?title), hasEducation(?u,?edu), standardTitle(?edu, ?title).

where the intermediate class Education is used to allow multivalued 
properties (it is also the domain of a DatatypeProperty: "other-titles", 
with xs:string as range),
then IF I MODEL the class Title as an enumeration of individuals, e.g., 
Title={ PhD HighSchool.....} , and assert:

<User rdf:ID="usr1">
     <hasEducation>
       <Education rdf:ID="usr1_edu">
          <standardTitle rdf:resource="#PhD"/>
       </Education>
     </hasEducation>
</User>  

Then the (SPARQL) query:              ..................
                                                        ?title a ex:Title .
                                                         ex:usr1 
ex:hasStandardTitle ?title .
                                                        ....................

doesn't returns:              ?title=ex:PhD.

INSTEAD IF I MODEL the class Title as a simple class with  the same 
individuals as its instances, then the rule works properly, and the 
query gives me the expected result. Might you explain me the reason of 
this behaviour?
    
Many thanks in advance
Paolo Bussotti





More information about the Pellet-users mailing list