More thoughts
On 15/11/2021 13:32, Pierre-Antoine Champin wrote:
> (...)
>
> More precisely, what we have is
>
> :markus a :penguin.
> :tweety :can :fly.
> { :tweety a :penguin } => { :tweety :can :fly }.
> |=
> :markus a :penguin.
> ?x :can :fly.
> { ?x a :penguin } => { ?x :can :fly }.
>
> From this, it would seem that we must infer that :markus :can :fly.
> That would be a problem (as it is clearly not the intent of the first
> graph), but the problem is actually elsewehere. There exists a model
> of the 2nd graph (e.g. the Herbrand model of the 1st one) in which
> :markus can not fly. So ":markus :can :fly" is not entailed by the
> first graph (which is ok) but not entailed either by the 2nd one
> either (which is a problem). So rule-entailment actually fails to
> capture the semantics of rules :-(
>
> Thanks for pointing that out. This is a bit frustrating, but that's
> progress ;-)
>
My gut feeling is that this issue is causes by the merging of blank
nodes and quick vars into a single kind of variables... Handling them
differently might help solve this problem. I'll think about it.
pa