Skip to content

Commit b8d577a

Browse files
committed
makes naming scheme for algebraic property path expressions consistent
1 parent b3e24d6 commit b8d577a

File tree

1 file changed

+30
-30
lines changed

1 file changed

+30
-30
lines changed

spec/index.html

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8704,7 +8704,7 @@ <h3>Algebraic Syntax</h3>
87048704
is defined recursively as follows:</p>
87058705
<ul>
87068706
<li id="defn_ppeLink">
8707-
<a href="#defn_ppeLink" class="ppeOp">link</a>(|iri|)
8707+
<a href="#defn_ppeLink" class="ppeOp">Link</a>(|iri|)
87088708
is an algebraic property path expression if
87098709
|iri| is an <a data-cite="RDF12-CONCEPTS#dfn-iri">IRI</a>.</li>
87108710
<li id="defn_ppeNPS">
@@ -8713,15 +8713,15 @@ <h3>Algebraic Syntax</h3>
87138713
|I| is a nonempty set of <a data-cite="RDF12-CONCEPTS#dfn-iri">IRIs</a>.
87148714
NPS is an acronym for <em>negated property set</em>.</i>
87158715
<li id="defn_ppeSeq">
8716-
<a href="#defn_ppeSeq" class="ppeOp">seq</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>)
8716+
<a href="#defn_ppeSeq" class="ppeOp">Seq</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>)
87178717
is an algebraic property path expression if
87188718
<var>ppe<sub>1</sub></var> and <var>ppe<sub>2</sub></var> are algebraic property path expressions.</li>
87198719
<li id="defn_ppeAlt">
8720-
<a href="#defn_ppeAlt" class="ppeOp">alt</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>)
8720+
<a href="#defn_ppeAlt" class="ppeOp">Alt</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>)
87218721
is an algebraic property path expression if
87228722
<var>ppe<sub>1</sub></var> and <var>ppe<sub>2</sub></var> are algebraic property path expressions.</li>
87238723
<li id="defn_ppeInv">
8724-
<a href="#defn_ppeInv" class="ppeOp">inv</a>(|ppe|)
8724+
<a href="#defn_ppeInv" class="ppeOp">Inv</a>(|ppe|)
87258725
is an algebraic property path expression if
87268726
|ppe| is an algebraic property path expression.</li>
87278727
<li id="defn_ppeZeroOrOnePath">
@@ -9031,34 +9031,34 @@ <h5>Translate Property Path Expressions</h5>
90319031
</tr>
90329032
<tr>
90339033
<td><code>iri</code></td>
9034-
<td><code><a href="#defn_ppeLink" class="ppeOp">link</a>(iri)</code></td>
9034+
<td><code><a href="#defn_ppeLink" class="ppeOp">Link</a>(iri)</code></td>
90359035
</tr>
90369036
<tr>
90379037
<td><code>^path</code></td>
9038-
<td><code><a href="#defn_ppeInv" class="ppeOp">inv</a>(path)</code></td>
9038+
<td><code><a href="#defn_ppeInv" class="ppeOp">Inv</a>(path)</code></td>
90399039
</tr>
90409040
<tr>
90419041
<td><code>!(:iri<sub>1</sub>|...|:iri<sub>n</sub>)</code></td>
90429042
<td><code><a href="#defn_ppeNPS" class="ppeOp">NPS</a>({:iri<sub>1</sub> ... :iri<sub>n</sub>})</code></td>
90439043
</tr>
90449044
<tr>
90459045
<td><code>!(^:iri<sub>1</sub>|...|^:iri<sub>n</sub>)</code></td>
9046-
<td><code><a href="#defn_ppeInv" class="ppeOp">inv</a>( <a href="#defn_ppeNPS" class="ppeOp">NPS</a>({:iri<sub>1</sub> ... :iri<sub>n</sub>}) )</code></td>
9046+
<td><code><a href="#defn_ppeInv" class="ppeOp">Inv</a>( <a href="#defn_ppeNPS" class="ppeOp">NPS</a>({:iri<sub>1</sub> ... :iri<sub>n</sub>}) )</code></td>
90479047
</tr>
90489048
<tr>
90499049
<td>
90509050
<code>!(:iri<sub>1</sub>|...|:iri<sub>i</sub>|^:iri<sub>i+1</sub>|...|^:iri<sub>m</sub>)</code>&nbsp;</td>
9051-
<td><code><a href="#defn_ppeAlt" class="ppeOp">alt</a>( <a href="#defn_ppeNPS" class="ppeOp">NPS</a>({:iri<sub>1</sub> ...:iri<sub>i</sub>}),<br>
9052-
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#defn_ppeInv" class="ppeOp">inv</a>(<a href="#defn_ppeNPS" class="ppeOp">NPS</a>({:iri<sub>i+1</sub>, ..., :iri<sub>m</sub>}))
9051+
<td><code><a href="#defn_ppeAlt" class="ppeOp">Alt</a>( <a href="#defn_ppeNPS" class="ppeOp">NPS</a>({:iri<sub>1</sub> ...:iri<sub>i</sub>}),<br>
9052+
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#defn_ppeInv" class="ppeOp">Inv</a>(<a href="#defn_ppeNPS" class="ppeOp">NPS</a>({:iri<sub>i+1</sub>, ..., :iri<sub>m</sub>}))
90539053
)</code></td>
90549054
</tr>
90559055
<tr>
90569056
<td><code>path1 / path2</code></td>
9057-
<td><code><a href="#defn_ppeSeq" class="ppeOp">seq</a>(path1, path2)</code></td>
9057+
<td><code><a href="#defn_ppeSeq" class="ppeOp">Seq</a>(path1, path2)</code></td>
90589058
</tr>
90599059
<tr>
90609060
<td><code>path1 | path2</code></td>
9061-
<td><code><a href="#defn_ppeAlt" class="ppeOp">alt</a>(path1, path2)</code></td>
9061+
<td><code><a href="#defn_ppeAlt" class="ppeOp">Alt</a>(path1, path2)</code></td>
90629062
</tr>
90639063
<tr>
90649064
<td><code>path*</code></td>
@@ -9106,15 +9106,15 @@ <h5>Translate Property Path Patterns</h5>
91069106
<th>Translation</th>
91079107
</tr>
91089108
<tr>
9109-
<td>|x| <a href="#defn_ppeLink" class="ppeOp">link</a>(|iri|) |y|</td>
9109+
<td>|x| <a href="#defn_ppeLink" class="ppeOp">Link</a>(|iri|) |y|</td>
91109110
<td>|x| |iri| |y|</td>
91119111
</tr>
91129112
<tr>
9113-
<td>|x| <a href="#defn_ppeInv" class="ppeOp">inv</a>(|iri|) |y|</td>
9113+
<td>|x| <a href="#defn_ppeInv" class="ppeOp">Inv</a>(|iri|) |y|</td>
91149114
<td>|y| |iri| |x|</td>
91159115
</tr>
91169116
<tr>
9117-
<td>|x| <a href="#defn_ppeSeq" class="ppeOp">seq</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>) |y|</td>
9117+
<td>|x| <a href="#defn_ppeSeq" class="ppeOp">Seq</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>) |y|</td>
91189118
<td>|x| <var>ppe<sub>1</sub></var> |var| . |var| <var>ppe<sub>2</sub></var> |y|</td>
91199119
</tr>
91209120
<tr>
@@ -9126,7 +9126,7 @@ <h5>Translate Property Path Patterns</h5>
91269126
<div class="issue" data-number="226">
91279127
I assume that the translation rules in this table are meant to be applied recursively,
91289128
but the section doesn't say anything about that. In particular, for the
9129-
"|x| <a href="#defn_ppeSeq" class="ppeOp">seq</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>) |y|"
9129+
"|x| <a href="#defn_ppeSeq" class="ppeOp">Seq</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>) |y|"
91309130
case: <var>ppe<sub>1</sub></var> and <var>ppe<sub>2</sub></var> in the resulting translation
91319131
may still be arbitrary algebraic property path expressions and, thus,
91329132
the translation should be applied again for each of the two resulting property path patterns
@@ -9147,15 +9147,15 @@ <h5>Translate Property Path Patterns</h5>
91479147
?s :p* ?o
91489148
</div>
91499149
<div class="algExample2">
9150-
<a href="#defn_absPath" class="absOp">Path</a>(?s, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<a href="#defn_ppeLink" class="ppeOp">link</a>(:p)), ?o)
9150+
<a href="#defn_absPath" class="absOp">Path</a>(?s, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<a href="#defn_ppeLink" class="ppeOp">Link</a>(:p)), ?o)
91519151
</div>
91529152
</div>
91539153
<div class="algExample">
91549154
<div class="algExample1">
91559155
:list rdf:rest*/rdf:first ?member
91569156
</div>
91579157
<div class="algExample2">
9158-
<a href="#defn_absPath" class="absOp">Path</a>(:list, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<a href="#defn_ppeLink" class="ppeOp">link</a>(rdf:rest)), ?_V) .<br>
9158+
<a href="#defn_absPath" class="absOp">Path</a>(:list, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<a href="#defn_ppeLink" class="ppeOp">Link</a>(rdf:rest)), ?_V) .<br>
91599159
?_V rdf:first ?member
91609160
</div>
91619161
</div>
@@ -9806,13 +9806,13 @@ <h3>Property Path Patterns</h3>
98069806
For example, the property path expression <code>(:p/:q)*</code>
98079807
is a ZeroOrMorePath expression involving a sequence property path,
98089808
and is translated into the algebraic property path expression
9809-
<a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>( <a href="#defn_ppeSeq" class="ppeOp">seq</a>(<a href="#defn_ppeLink" class="ppeOp">link</a>(:p), <a href="#defn_ppeLink" class="ppeOp">link</a>(:q)) ).</p>
9809+
<a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>( <a href="#defn_ppeSeq" class="ppeOp">Seq</a>(<a href="#defn_ppeLink" class="ppeOp">Link</a>(:p), <a href="#defn_ppeLink" class="ppeOp">Link</a>(:q)) ).</p>
98109810
<p>Thereafter, the <a href="#sparqlTranslatePathPatterns">translation of property path patterns</a>
98119811
converts some of these algebraic property path expressions
98129812
to other SPARQL graph patterns, such as converting property paths of length one to triple
98139813
patterns, which in turn are combined into basic graph patterns.
98149814
This leaves algebraic property path expressions with the operators
9815-
<a href="#defn_ppeAlt" class="ppeOp">alt</a>,
9815+
<a href="#defn_ppeAlt" class="ppeOp">Alt</a>,
98169816
<a href="#defn_ppeZeroOrOnePath" class="ppeOp">ZeroOrOnePath</a>,
98179817
<a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>,
98189818
<a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>,
@@ -9858,42 +9858,42 @@ <h3>Property Path Patterns</h3>
98589858
<p><b>Definition: <span id="defn_evalPP_predicate">Evaluation of Predicate Property Path</span></b></p>
98599859
<p>Let |iri| be an IRI.</p>
98609860
<pre class="nohighlight">
9861-
ppeval(<var>X</var>, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>) = <a href="#BasicGraphPattern">evaluation of basic graph pattern</a> {<var>X</var> <var>iri</var> <var>Y</var>}
9861+
ppeval(<var>X</var>, <a href="#defn_ppeLink" class="ppeOp">Link</a>(<var>iri</var>), <var>Y</var>) = <a href="#BasicGraphPattern">evaluation of basic graph pattern</a> {<var>X</var> <var>iri</var> <var>Y</var>}
98629862
</pre>
98639863
</div>
98649864
<p>If both |X| and |Y| are variables, this is the same as:</p>
98659865
<pre class="nohighlight">
9866-
ppeval(<var>X</var>:var, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:var) =
9866+
ppeval(<var>X</var>:var, <a href="#defn_ppeLink" class="ppeOp">Link</a>(<var>iri</var>), <var>Y</var>:var) =
98679867
{ (<var>X</var>, <var>xn</var>:term) (<var>Y</var>, <var>yn</var>:term) | triple (<var>xn</var>, <var>iri</var>, <var>yn</var>) is in the active graph }</pre>
98689868
<p>If |X| is a variable and |Y| an RDF term:</p>
98699869
<pre class="nohighlight">
9870-
ppeval(<var>X</var>:var, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:term) =
9870+
ppeval(<var>X</var>:var, <a href="#defn_ppeLink" class="ppeOp">Link</a>(<var>iri</var>), <var>Y</var>:term) =
98719871
{ (<var>X</var>, <var>xn</var>:term) | triple (<var>xn</var>, <var>iri</var>, <var>Y</var>) is in the active graph }</pre>
98729872
<p>If |X| is an RDF term and |Y| is a variable:</p>
98739873
<pre class="nohighlight">
9874-
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:var) =
9874+
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">Link</a>(<var>iri</var>), <var>Y</var>:var) =
98759875
{ (<var>Y</var>, <var>yn</var>:term) | triple (<var>X</var>, <var>iri</var>, <var>yn</var>) is in the active graph }</pre>
98769876
<p>If both |X| and |Y| are RDF terms:</p>
98779877
<pre class="nohighlight">
9878-
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:term)
9878+
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">Link</a>(<var>iri</var>), <var>Y</var>:term)
98799879
= { μ<sub>0</sub> } if triple (<var>X</var>, <var>iri</var>, <var>Y</var>) is in the active graph
98809880
= { { } } = Ω<sub>0</sub>
98819881

9882-
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:term) =
9882+
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">Link</a>(<var>iri</var>), <var>Y</var>:term) =
98839883
{ } if triple (<var>X</var>, <var>iri</var>, <var>Y</var>) is not in the active graph
98849884
</pre>
98859885
<p>Informally, evaluating a Predicate Property Path is the same as executing a subquery
98869886
<code>SELECT&nbsp;*&nbsp;{&nbsp;|X|&nbsp;|iri|&nbsp;|Y|&nbsp;}</code> at that point in the query evaluation.</p>
98879887
<div class="defn">
98889888
<p><b>Definition: <span id="defn_evalPP_inverse">Evaluation of Inverse Property Path</span></b></p>
98899889
<p>Let |ppe| be an <a href="#defn_AlgebraicPropertyPathExpression">algebraic property path expression</a>, then:</p>
9890-
<pre class="nohighlight">ppeval(<var>X</var>, <a href="#defn_ppeInv" class="ppeOp">inv</a>(<var>ppe</var>), <var>Y</var>) = ppeval(<var>Y</var>, <var>ppe</var>, <var>X</var>)</pre>
9890+
<pre class="nohighlight">ppeval(<var>X</var>, <a href="#defn_ppeInv" class="ppeOp">Inv</a>(<var>ppe</var>), <var>Y</var>) = ppeval(<var>Y</var>, <var>ppe</var>, <var>X</var>)</pre>
98919891
</div>
98929892
<div class="defn">
98939893
<p><b>Definition: <span id="defn_evalPP_sequence">Evaluation of Sequence Property Path</span></b></p>
98949894
<p>Let <var>ppe<sub>1</sub></var> and <var>ppe<sub>2</sub></var> be <a href="#defn_AlgebraicPropertyPathExpression">algebraic property path expressions</a>. Let |V| be a fresh variable.</p>
98959895
<pre class="nohighlight"><var>A</var> = <a href="#defn_algJoin" class="algFct">Join</a>( ppeval(<var>X</var>, <var>ppe<sub>1</sub></var>, <var>V</var>), ppeval(<var>V</var>, <var>ppe<sub>2</sub></var>, <var>Y</var>) )</pre>
9896-
<pre class="nohighlight">ppeval(<var>X</var>, <a href="#defn_ppeSeq" class="ppeOp">seq</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>), <var>Y</var>) = <a href="#defn_algProject" class="algFct">Project</a>(<var>A</var>, <var>PV</var>)</pre>
9896+
<pre class="nohighlight">ppeval(<var>X</var>, <a href="#defn_ppeSeq" class="ppeOp">Seq</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>), <var>Y</var>) = <a href="#defn_algProject" class="algFct">Project</a>(<var>A</var>, <var>PV</var>)</pre>
98979897
<p>where |PV| = { |v| ∈ {|X|,|Y|} | |v| is a variable}.</p>
98989898
<div class="issue" data-number="266"><a href="#defn_algJoin" class="algFct">Join</a> produces a multiset of solution mappings but <a href="#defn_algProject" class="algFct">Project</a> expects a sequence as its first argument. Moreover, <a href="#defn_algProject" class="algFct">Project</a> produces a sequence but ppeval(..) should be a multiset.</div>
98999899
</div>
@@ -9910,7 +9910,7 @@ <h3>Property Path Patterns</h3>
99109910
<p><b>Definition: <span id="defn_evalPP_alternative">Evaluation of Alternative Property Path</span></b></p>
99119911
<p>Let <var>ppe<sub>1</sub></var> and <var>ppe<sub>2</sub></var> be <a href="#defn_AlgebraicPropertyPathExpression">algebraic property path expressions</a>.
99129912
<pre class="nohighlight">
9913-
ppeval(<var>X</var>, <a href="#defn_ppeAlt" class="ppeOp">alt</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>), <var>Y</var>) =
9913+
ppeval(<var>X</var>, <a href="#defn_ppeAlt" class="ppeOp">Alt</a>(<var>ppe<sub>1</sub></var>, <var>ppe<sub>2</sub></var>), <var>Y</var>) =
99149914
<a href="#defn_algUnion" class="algFct">Union</a>( ppeval(<var>X</var>, <var>ppe<sub>1</sub></var>, <var>Y</var>), ppeval(<var>X</var>, <var>ppe<sub>2</sub></var>, <var>Y</var>) )
99159915
</pre>
99169916
</div>
@@ -9997,7 +9997,7 @@ <h3>Property Path Patterns</h3>
99979997
<var>t</var> in <a href="#defn_nodeSet">nodes</a>(<var>G</var>), (<var>vy</var>, <var>n</var>) in ppeval(<var>t</var>, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<var>ppe</var>), <var>vy</var>) }
99989998

99999999
ppeval(<var>vx</var>:var, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<var>ppe</var>), <var>y</var>:term) =
10000-
ppeval(<var>y</var>:term, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<a href="#defn_ppeInv" class="ppeOp">inv</a>(<var>ppe</var>)), <var>vx</var>:var)
10000+
ppeval(<var>y</var>:term, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<a href="#defn_ppeInv" class="ppeOp">Inv</a>(<var>ppe</var>)), <var>vx</var>:var)
1000110001

1000210002
ppeval(<var>x</var>:term, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<var>ppe</var>), <var>y</var>:term) =
1000310003
{ { } } if { (<var>vy</var>:var,<var>y</var>) } in ppeval(<var>x</var>, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<var>ppe</var>), <var>vy</var>)
@@ -10025,7 +10025,7 @@ <h3>Property Path Patterns</h3>
1002510025
<var>t</var> in <a href="#defn_nodeSet">nodes</a>(<var>G</var>), (<var>vy</var>, <var>n</var>) in ppeval(<var>t</var>, <a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>(<var>ppe</var>), <var>vy</var>) }
1002610026

1002710027
ppeval(<var>vx</var>:var, <a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>(<var>ppe</var>), <var>y</var>:term) =
10028-
ppeval(<var>y</var>:term, <a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>(<a href="#defn_ppeInv" class="ppeOp">inv</a>(<var>ppe</var>)), <var>vx</var>)
10028+
ppeval(<var>y</var>:term, <a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>(<a href="#defn_ppeInv" class="ppeOp">Inv</a>(<var>ppe</var>)), <var>vx</var>)
1002910029

1003010030
ppeval(<var>x</var>:term, <a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>(<var>ppe</var>), <var>y</var>:term) =
1003110031
{ { } } if { (<var>vy</var>:var, <var>y</var>) } in ppeval(<var>x</var>, <a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>(<var>ppe</var>), <var>vy</var>)

0 commit comments

Comments
 (0)