Re: Hello, n3

Dear Ruben,

I would like to comment on your remarks below:

> Nonetheless, here’s my number one topic I’m interested in:
> – How to align N3 with the RDF 1.1 standard, in particular with TriG?
>
> Regarding this topic, it is useful to know that:
> – The notion of N3 formulas and TriG graphs is different:
>     the former represent a closed set, the latter an open set.

In case of TriG this really depends on the interpretation you choose. 
But given, that you choose some kind of open interpretation, would that 
be different from saying in N3 something like:

    :graph :includesTriples {:a :b :c. :d :e :f}.

I mean, if the graph notation in brackets {} really refers to the 
triples in them (and I know that this in itself is complicated, but 
please ignore that problem for now), can't we still have some open 
concepts by using the right predicates?


> – While TriG documents are almost valid N3 documents
>     (the equals sign got dropped at some point),
>     their semantics are different, notably with respect to blank nodes.

Interesting that you say that "the equal sign" got dropped. Reading this 
I would have expected that you understand a graph as closed. But you see 
above how I understood the graph so far.


>
> I have talked to TimBL about such an alignment,
> indicating that N3 should change its interpretation of blank nodes
> if we want it to be compatible with RDF 1.1,
> which has been standardized (whereas N3 has not).
> However, he remarked (understandably) that N3 semantics
> predates TriG by over a decade, and therefore is hard to change.

Remember that there is no "interpretation" of TriG. I think you refer to 
this sentence:

"BlankNodes sharing the same label in differently labeled graph 
statements are considered to be the same BlankNode."

(taken from: https://www.w3.org/TR/trig/#terms-blanks-nodes)

Please note that this is rather problematic since according to RDF 
semantics blank nodes come with an implicit quantifier. So, if you say 
that two blank nodes from differently labeled graph statements are the 
same you shift the quantifier from the local graph upwards which can of 
course be useful in many cases but it also causes that you do not have 
the local blank nodes from the original graphs any more.

Since the semantics of TriG is not fixed, my explanation stayed vague so 
far and I am aware of that. So, lets just assume for now, that the named 
graph refers to an actual graph somewhere in the Web and that by stating:

    :graph1 {:jim a :Unicorn}.

I mean that the graph I find when I follow my uri :graph1 contains the 
exact triple ":jim a :Unicorn.".  If we then have a different graph

    :graph2 {:jim :likes :apples.}.

We can, with the above, indeed state in TriG:

    :graph1 {_:x a :Unicorn}.
    :graph2 {_:x :likes :apples.}.

Which according to our assumptions here means that "There exists and 
instance which according to graph 1 is a unicorn and according to graph 
2 likes apples."

Till here, everything is fine. But how do we deal with the case that 
graph contains the explicit triple:

    _:y a :Dragon.

We cannot state

    :graph1 {_:y a :Dragon}.

in this case since that would mean:

"There exists an instance y and graph 1 states that this instance is a 
dragon."

And not what we actually wanted to express:

"Graph one contains the statement that dragons exist."

The latter cannot really be expressed here and I think that is a problem 
since such blank nodes are present in RDF graphs and they have the local 
scope.



To come back to N3,  the local scoping actually makes a difference when 
you deal with negation. Consider the triples:

  :doerthe :says {:tom a :Cat}.

meaning "Doerthe says that Tom is a cat". Now, imagine, that the case is 
not that clear and to you Tom actually looks more like a dog. Then we 
could state

  :ruben :denies {:tom a :Cat}.

meaning "Ruben denies that Tom is a cat.". The interesting point is now 
that with our local scoping in N3 this does not entail:

  :ruben :denies {_:x a :Cat}.

Because that would mean "Ruben denies that cat exist." and that would be 
a rather strong statement which we cannot justify by you doubting the 
"catness" of Tom.


I only came up with this example to say: regardless of how we formalise 
it, the fact that a blank node in RDF and thereby also in N3 is a 
variable with an implicit quantifier which also has a position (inside 
or outside the quote?) makes this a concept we need to be very careful 
with. So, I would also careful with ad-hoc alignments and carefully see 
which use cases we exclude with our formalisations.

Kind regards,
Doerthe

-- 
Dörthe Arndt
Researcher Semantic Web
imec - Ghent University - IDLab | Faculty of Engineering and Architecture | Department of Electronics and Information Systems
Technologiepark-Zwijnaarde 19, 9052 Ghent, Belgium
t: +32 9 331 49 59 | e: doerthe.arndt@ugent.be

Received on Wednesday, 12 December 2018 10:12:41 UTC