Unsafe Rules and existential variables

Dear All,

This is a slightly odd OWL question, but I thought this would be a good 
forum for it.

I have read some of the work on rules & Dls, but one of the remaining 
`itches' I have is with unsafe rules (that is rules, where there are 
variables in the head that do not appear in the body).

I am trying to work with a system that uses a very simple rules syntax 
(propositional logic, but with variables so that the rules act as 
schemas for all groundings of the variables that satisfy the rules) and 
would like to be able to use unsafe rules. The problem is that in many 
cases I can't ground the unsafe heads because the point of the rule is 
to infer the existence of new individuals.Eg.:

Given A(MsJones) being in the A Box, and a rule of the form:

	r1: A(x) 	-> 	B(x,y) & C(y) (Unsafe head)
						
Ground(r1): A(MsJones) 	->	B(MsJones,y) & C(y)

(as there is no grounding for y in the a-box)


One solution that has been suggested (by Boris Motik, I think) is that 
one rolls-up (using Horrocks A-Box query technique) the (unsafe) head of 
the rule to form a new class definition. So now I have:

r1: A(x) 	-> 	SpecialBC_Class(x) (Newly-safe head)
						
Ground(r1): A(MsJones) 	->	SpecialBC_Class(MsJones)

The problem with this is that I can't then `get' at the variables in the 
head very easily, which I want to do for other reasons.

The other reason it seems a little unsatisfactory is that if rolling-up 
produces an existentially quantified formula, and this is then 
Skolemised, you get something with anonymous individuals in, which 
should be possible to do without going through the DL route. So if I 
follow the procedure above, I get:


	r1: A(x) 	-> 	SpecialBC_Class(x)
						
Ground(r1): A(MsJones) 	->	SpecialBC_Class(MsJones)
						
where there is a TBox axiom SpecialBC_Class = A & \exists B.C, so the 
ABox now contains:

A(MsJones)
SpecialBC_Class(MsJones) and hence
B(MsJones,_Anon1234), C(_Anon1234)

My question is whether this would be better off done in the (simple) 
rule language, rather than ducking between the rules and DL, which seems 
both inelegant (much to-ing & fro0ing) and a little dishonest (since we 
know it is happening, shouldn't we do it locally?).

Thanks a lot, and apologies for the long post.

Matt

Received on Tuesday, 5 December 2006 16:17:15 UTC