-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Existential variable in the rule head and conclusion #217
Comments
Actually there is an example like that in log-entailment section:
But maybe it's worth clarifying that |
With the local graph, we meant the graph term. But I understand that this is not that clear or it was not when you first read it. I will come back with a proposal... |
Thank you. Maybe it's worth to explain more explicitly why there is no practical difference between
and a
|
Which probably means that we can't say that blank nodes are existential variables and variable terms are universals. It seems that it's more correct to say that unbound nodes (in the rule conclusion) act as existential variables and the bound nodes as universals. However, because of the scoping, the blank nodes in the rule conclusions are always local and cannot be bound, thus always acting as existential variables. |
Blank nodes are really existentially quantified and not unbound. The question is more: where exactly do we put the quantifier? If I take your example from above |
Please note, that the semantics makes a difference between these two, only the implementation in EYE does not and the reason is of rather practical nature: If you allow universal quantification on triple level, you can make statements like |
Thank you. I think these explanations have cleared up the situation mostly for me. I was wondering about the EYE behavior too. |
Right and the scope of blank nodes has been for a long time a thorn in the eye ;-)
So
will pass as
|
Are blank nodes existential though in this sense?
In my understanding, with the existential variables
I'd expect the rule to match two times, and produce another triple (say Also with the universal vs existential treatment of blank nodes & variables rules like
should not produce any triples, which seems to be not the case at the moment. |
I understand that in the absence of universal variables in the produced triple, the produced triples with blank nodes will be "isomorphic" to one another, so they can be treated as the same object. But that seems like a bit different aspect of the picture for now. |
Would it also be possible to codify the universal/existential/blank node semantics in the N3 tests? That would also help to elaborate various cases. Unless I'm mistaken, the test can't be specified with the exact graph comparison, but would canonicalization work here? |
Ok, I think I forgot about Skolemization here, so this treatment of existential variables is indeed close to the theory of existential rules. |
According to the N3 semantics,
becomes
({},{},{<{},{x},{(x,rdf:type,:Human)}>,log:implies,<{},{x},{(x,rdf:type,:Mortal)}>})
So having a graph like
will lead to a conclusion
, not
Can this case be added to the examples?
Maybe some clarification can be done in N3 grammar that the blank node with the same identifier inside the graph term is not the same blank node as the one outside.
I think
Note that this identifier is only usable within our local N3 Graph
can be understood as_:x
will be the same in both graph terms (and outside of it, if it was present there).The text was updated successfully, but these errors were encountered: