[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