4.1 Group graph patterns
The formal semantics of group graph patterns
does not work in conjunction with the
definiton of basic graph pattern matching (section 2.5.1 "General
framework"). For example, let G be the graph
<s> <v1> <o1> . <s> <v2> <o2> .
Consider the pattern
{ ?x <v1> _:a } { ?x <v2> _:a }
The pattern is a group graph pattern consisting of two triple
patterns. According to the definition, we are looking for a
solution S that is a solution of { ?x <v1> _:a } and a
solution of { ?x <v2> _:a }. As a trial solution, consider the
function S that maps ?x to <s>. I claim that S is a solution of
both subpatterns. For the first pattern, according to the
definition of basic graph pattern E-matching the question is
whether the following graph
<s> <v1> <o1> . <s> <v2> <o2> . <s> <v1> _:a .
is entailed by G. The answer is yes. Similarly, s is a solution
of the second pattern as well.
The problem in logical terms is that
"for all x there exists y such that P(x, y)" is not as strong
an assertion as "there exists y such that for all x, P(x, y)".
The current definition only supports the weaker assertion
"for all there exist" rather than the desired assertion
"there exists for all". Mathematicians generally use the term
"uniform" to describe "for all there exists" situations
(for example, the definition of uniform continuity).
On the other hand, if one uses the alternative definition of
triple matching in section 2.5.2 "SPARQL basic graph pattern
matching", the uniform treatment of blank node identifiers
in graph patterns is assured. This definition says that
a solution is found by mapping variables and blank node identifiers
to RDF terms. In that case the trial solution S must specify
which node in G the blank node identifier _:a is bound to.
Since there is no single choice that works, there is no solution
to the pattern.
Fred