Re: Issue: Add hasValue to OWL Lite

> > The problem with adding hasValue to OWL Lite is that it wouldn't be
> > Lite any more. The lack of hasValue in Lite is, from an implementation
> > point of view, the main thing that differentiates it from fast -
> > hasValue is very tough to deal with, and is responsible for pushing
> > the worst case complexity of reasoning in fast OWL from ExpTime to
> > NExpTime.
>
> Could you unpack that a bit?
>
> Could you give an example, maybe?
>
> The rules for hasValue that occur to me are:
>
>  holds(rdf:type, X, C) :-
>          holds(P, X, Y),
>          holds(owl:onProperty, C, P),
>          holds(owl:hasValue, C, Y).
>
>
> now that's only a partial specification of hasValue;
> it allows you to come to hasValue conclusions, but
> not to exploit hasValue claims in other ways.
>
> I'm curious what people actually expect to do with hasValue,
> and what makes hasValue difficult to deal with,
> and whether they overlap.
>
> If what people want to do is to say
>
>          People with birthplace America are Americans
>          Fred birthplace America
>          =>
>          Fred is an American
>
> then that looks only horn-clause-hard.
>
> But if they want to do something else, I can imagine
> it would get harder.

I can see that yours is straightforward

IF                     | THEN
----------------------------------------
?r owl:onProperty ?p.  |
?r owl:hasValue ?y.    |
?x ?p ?y.              | ?x rdf:type ?r.


but that

IF                     | THEN
----------------------------------------
?r owl:onProperty ?p.  |
?r owl:hasValue ?y.    |
?x rdf:type ?r.        | ?x ?p ?y.

is not so straightforward to do with a
"direct encoding" for all the ?p cases

(if that would be wanted, then I would
solve that in our prepare() method i.e.
to find all such ?p by asking the query
?r owl:onProperty ?p; owl:hasValue ?y
and then do direct encoding of the rule)

-- ,
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/

Received on Wednesday, 30 October 2002 10:34:40 UTC