-
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
Is :a :b {}
the same triple as :a :b true
#185
Comments
The whole discussion here has several aspects. First of all: In N3 and also in RDF the empty graph (already in N3's base interpretation and RDF's simple entailment) is always true. But in the examples you give, we do not just have the empty graph, we do have the empty graph used as a term and that is different. If we have an N3 implication like
We can translate the premise to an FOL-like truth, all together ⊤ → can(birds,fly) But: true is a boolean literal and not a formula, so the question here is rather whether we want to translate ⊤ to true. To add another example:
(freely translated to "Dörthe denies the truth" :)) then we have in FOL-style something like denies(doerthe, ⊤) Again, here the {} stands for ⊤ as a formula and it is up to us whether we think that this is the same as the boolean literal true. Currently we see them as equal, we state that true is syntactic sugar for {}. So, following your request, I would either make more explicit that we do that or define some IRI n3:trueGraphTerm instead. Could you (or others) think of any use cases in which we would like to be able to distinguish between true and {}? So far, I think it is a good solution to treat {} and true as equal, but I could be wrong. |
Not really, no. Inversely, I can imagine use cases where one would want to differentiate between |
I thought about it and think that it might be problematic that Also: So maybe, it is not that easy after all... |
Ah, and I see that eye.js allows two types (but I guess you knew that :) ) |
There is a very old eye there so an update is required.
It was corrected a while ago and should give two types which you can see
when choosing eye-js
:result :is (log:Formula log:Formula log:Formula). :result :is (log:Formula
log:Literal log:Formula). :result :is (log:Literal log:Formula
log:Formula). :result :is (log:Literal log:Literal log:Formula).
…On Tue, Jul 4, 2023 at 3:51 PM doerthe ***@***.***> wrote:
I thought about it and think that it might be problematic that {} and true
might get two raw types.
Try the following with jen3 and EYE:
https://n3-editor.herokuapp.com/n3/editor/s/jO8Pj1lC
We see that they differ and currently literals and graphs are disjoint
(even though we do not explicitly state that in the semantics, but I guess
we can get into trouble with some built-ins).
Also: log:includes only accepts graph terms as input, but {} is a literal
according to EYE.
So maybe, it is not that easy after all...
—
Reply to this email directly, view it on GitHub
<#185 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AABPHJFWVWW4GZTWXGCCKKDXOQNWTANCNFSM6AAAAAAY3UFDTU>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
OK, so my main question is: can something be a formula and a literal at the same time? So far that is no problem, but I wonder whether it somehow clashes with RDF. |
In rdfjs/types#37 there has been a discussion around whether parsers should interpret
{}
as the literaltrue
.To me this seems reasonable. But I think an explicit decision needs to be made on this at a spec level, rather than it being implicit dependent on ones' interpretation of whether the last statement in ground graph semantic is a syntactic or semantic one.
Once a decision is made I am happy to follow up with a PR containing either the positive or negative test case.
The text was updated successfully, but these errors were encountered: