-
Notifications
You must be signed in to change notification settings - Fork 18
Blank nodes cause issues inside formulas called with log:call
#148
New issue
Have a question about this project? Sign up for a free GitHub acc 8000 ount 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
Comments
I think this causes one more effect, when I use resource paths with backward rules. For example, I have this rule: {
?res tuner:body ?body .
} <= {
?res log:includes {
[] a tuner:Response ; tuner:body ?body .
} .
} . I should be able to write ?res tuner:body ?body .
?body log:includes {} I believe this could be related but I cannot yet explain why I observe inconsistent behavior. What I think is happening it that the shorthand is expanded so that Does any of that make sense? |
Indeed, when I add these line to the rule above, I see this "res" log:trace ?res.
"body" log:trace ?body.
So it passes the rule twice while waiting for the response and then what? Why in the last line the |
I spent 1/2 hour trying to construct an example that I can run straight with eye but I failed to discover an issue. |
So also give the command line that you used. |
log:call
Ah, I finally managed to nail it and reduce the ruleset to provide a meaningful reproduction. The factor is calling a formula with Here's Gist with the failing rules: https://gist.github.com/tpluscode/cb4b4563469dd8cc439a6ad3ec172869 |
The issue is that in a graph term (aka formula) an existential is not the same as a universal.
which is totally different from
|
I figured as much. And it means it's by design? |
_:x blank nodes are existentially quantified variables and ?x quickvars are universally quantified variables. |
Well yes, but is the fact that they are interpreted differently inside a graph term is by N3's design? Does it effectively mean that I cannot use resource paths in formulas? |
That is indeed the case for eye. It would be good if you raise this N3 issue at https://github.com/w3c/N3/issues |
The simplest case I could find is
wich gives
|
As you can see in https://editor.notation3.org/s/Xz75FQ0O the jen3 reasoner also agrees with eye. |
Of course I fail to create a minimal repro but I found the problem that sometimes, presumably because I pass graphs around using backward rules,
log:includes
behaves "differently"Typically, I should be able to use a blank node to match any node, right?
However, in some cases this stops working for me because it appears that the blank node is compared a face value (?)
Instead, I had to change there to
Using eye v11.10.0
The text was updated successfully, but these errors were encountered: