Skip to content

Commit ebf96de

Browse files
hartigafs
andauthored
Apply suggestions from code review
Co-authored-by: Andy Seaborne <[email protected]>
1 parent 0cf6b73 commit ebf96de

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

spec/index.html

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9716,7 +9716,7 @@ <h3>Property Path Patterns</h3>
97169716
<p>To denote the evaluation of the property path pattern, for every
97179717
<a href="#defn_AlgebraicQueryExpression">algebraic query expression</a>
97189718
of the form
9719-
<a href="#defn_absPath" class="absOp">Path</a>(|X|, |ppe|, |Y|) </p>, we write the following:
9719+
<a href="#defn_absPath" class="absOp">Path</a>(|X|, |ppe|, |Y|), we write the following:</p>
97209720
<pre class="nohighlight">ppeval(<var>X</var>, <var>ppe</var>, <var>Y</var>)</pre>
97219721
<p>This produces a multiset of solution
97229722
mappings, each solution mapping having a binding for variables used (each of |X| and |Y| can
@@ -9750,20 +9750,24 @@ <h3>Property Path Patterns</h3>
97509750
</div>
97519751
<p>If both |X| and |Y| are variables, this is the same as:</p>
97529752
<pre class="nohighlight">
9753-
ppeval(<var>X</var>:var, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:var) = { (<var>X</var>, <var>xn</var>) (<var>Y</var>, <var>yn</var>) | <var>xn</var> and <var>yn</var> are RDF terms and triple (<var>xn</var>, <var>iri</var>, <var>yn</var>) is in the active graph }</pre>
9753+
ppeval(<var>X</var>:var, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:var) =
9754+
{ (<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>
97549755
<p>If |X| is a variable and |Y| an RDF term:</p>
97559756
<pre class="nohighlight">
9756-
ppeval(<var>X</var>:var, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:term) = { (<var>X</var>, <var>xn</var>) | <var>xn</var> is an RDF term and triple (<var>xn</var>, <var>iri</var>, <var>Y</var>) is in the active graph }</pre>
9757+
ppeval(<var>X</var>:var, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:term) =
9758+
{ (<var>X</var>, <var>xn</var>:term) | triple (<var>xn</var>, <var>iri</var>, <var>Y</var>) is in the active graph }</pre>
97579759
<p>If |X| is an RDF term and |Y| is a variable:</p>
97589760
<pre class="nohighlight">
9759-
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:var) = { (<var>Y</var>, <var>yn</var>) | <var>yn</var> is an RDF term and triple (<var>X</var>, <var>iri</var>, <var>yn</var>) is in the active graph }</pre>
9761+
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:var) =
9762+
{ (<var>Y</var>, <var>yn</var>:term) | triple (<var>X</var>, <var>iri</var>, <var>yn</var>) is in the active graph }</pre>
97609763
<p>If both |X| and |Y| are RDF terms:</p>
97619764
<pre class="nohighlight">
97629765
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:term)
97639766
= { μ<sub>0</sub> } if triple (<var>X</var>, <var>iri</var>, <var>Y</var>) is in the active graph
97649767
= { { } } = Ω<sub>0</sub>
97659768

9766-
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:term) = { } if triple (<var>X</var>, <var>iri</var>, <var>Y</var>) is not in the active graph
9769+
ppeval(<var>X</var>:term, <a href="#defn_ppeLink" class="ppeOp">link</a>(<var>iri</var>), <var>Y</var>:term) =
9770+
{ } if triple (<var>X</var>, <var>iri</var>, <var>Y</var>) is not in the active graph
97679771
</pre>
97689772
<p>Informally, evaluating a Predicate Property Path is the same as executing a subquery
97699773
<code>SELECT&nbsp;*&nbsp;{&nbsp;|X|&nbsp;|iri|&nbsp;|Y|&nbsp;}</code> at that point in the query evaluation.</p>
@@ -9785,7 +9789,7 @@ <h3>Property Path Patterns</h3>
97859789
<p>where <var>P<sub>1</sub></var> is a
97869790
<a href="#defn_AlgebraicPropertyPathExpression">property path expression</a>
97879791
that can be <a href="#sparqlTranslatePathExpressions">translated</a> into the
9788-
<a href="#defn_AlgebraicPropertyPathExpression">algebraic property path expression</a> <var>ppe<sub>1</sub></var>
9792+
<a href="#defn_AlgebraicPropertyPathExpression">algebraic property path expression</a> <var>ppe<sub>1</sub></var>,
97899793
and <var>P<sub>2</sub></var> can be translated into <var>ppe<sub>2</sub></var>.
97909794
This observation is based on the fact that a blank node <code>_:a</code> acts like a variable (under simple
97919795
entailment) except it does not appear in the results from <code>SELECT *</code>.</p>
@@ -9802,12 +9806,12 @@ <h3>Property Path Patterns</h3>
98029806
<p>where <var>P<sub>1</sub></var> is a
98039807
<a href="#defn_AlgebraicPropertyPathExpression">property path expression</a>
98049808
that can be <a href="#sparqlTranslatePathExpressions">translated</a> into the
9805-
<a href="#defn_AlgebraicPropertyPathExpression">algebraic property path expression</a> <var>ppe<sub>1</sub></var>
9809+
<a href="#defn_AlgebraicPropertyPathExpression">algebraic property path expression</a> <var>ppe<sub>1</sub></var>,
98069810
and <var>P<sub>2</sub></var> can be translated into <var>ppe<sub>2</sub></var>.</p>
98079811
<div class="defn">
98089812
<p><b>Definition: <span id="defn_nodeSet">Node set of a graph</span></b></p>
98099813
<p>The node set of a graph |G|, <a href="#defn_nodeSet">nodes</a>(|G|), is:</p>
9810-
<p><a href="#defn_nodeSet">nodes</a>(|G|) = { |n| | |n| is an RDF term that is used as a subject or object of a triple of
9814+
<p><a href="#defn_nodeSet">nodes</a>(|G|) = { |n| | |n| is an RDF term that is used as a subject or object of an asserted triple of
98119815
|G|}</p>
98129816
</div>
98139817
<div class="defn">
@@ -9828,7 +9832,9 @@ <h3>Property Path Patterns</h3>
98289832
{ } otherwise</pre>
98299833
<pre class="nohighlight">
98309834
ppeval(<var>X</var>:var, <a href="#defn_ppeZeroOrOnePath" class="ppeOp">ZeroOrOnePath</a>(<var>ppe</var>), <var>Y</var>:var) =
9831-
{ (<var>X</var>, <var>xn</var>) (<var>Y</var>, <var>yn</var>) | either (<var>yn</var> in <a href="#defn_nodeSet">nodes</a>(<var>G</var>) and <var>xn</var> = <var>yn</var>) or {(<var>X</var>, <var>xn</var>), (<var>Y</var>, <var>yn</var>)} in ppeval(<var>X</var>, <var>ppe</var>, <var>Y</var>) }</pre>
9835+
{ (<var>X</var>, <var>xn</var>) (<var>Y</var>, <var>yn</var>) |
9836+
either (<var>yn</var> in <a href="#defn_nodeSet">nodes</a>(<var>G</var>) and <var>xn</var> = <var>yn</var>)
9837+
or {(<var>X</var>, <var>xn</var>), (<var>Y</var>, <var>yn</var>)} in ppeval(<var>X</var>, <var>ppe</var>, <var>Y</var>) }</pre>
98329838
</div>
98339839
<p>We define an auxiliary function, <a href="#defn_evalALP_1">ALP</a>, used in the definitions of <a href="#defn_evalZeroOrMorePath">ZeroOrMorePath</a> and
98349840
<a href="#defn_evalOneOrMorePath">OneOrMorePath</a>. Note that the algorithm given here serves to specify the feature. An
@@ -9848,7 +9854,8 @@ <h3>Property Path Patterns</h3>
98489854
Let <var>eval</var>(<var>x</var>:term, <var>ppe</var>) be the evaluation of <var>ppe</var>,
98499855
starting at RDF term <var>x</var>,
98509856
and returning a multiset of RDF terms reached
9851-
by repeated matches of <var>ppe</var>.
9857+
starting at RDF term <var>x</var>, and returning a multiset
9858+
of RDF terms reached by repeated matches of <var>ppe</var>.
98529859

98539860
<a href="#defn_evalALP_1">ALP</a>(<var>x</var>:term, <var>ppe</var>) =
98549861
Let <var>V</var> = empty set
@@ -9875,7 +9882,8 @@ <h3>Property Path Patterns</h3>
98759882
{ { (<var>vy</var>, <var>n</var>) } | <var>n</var> in <a href="#defn_evalALP_1">ALP</a>(<var>X</var>, <var>ppe</var>) }
98769883

98779884
ppeval(<var>vx</var>:var, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<var>ppe</var>), <var>vy</var>:var) =
9878-
{ { (<var>vx</var>, <var>t</var>), (<var>vy</var>, <var>n</var>) } | <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>) }
9885+
{ { (<var>vx</var>, <var>t</var>), (<var>vy</var>, <var>n</var>) } |
9886+
<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>) }
98799887

98809888
ppeval(<var>vx</var>:var, <a href="#defn_ppeZeroOrMorePath" class="ppeOp">ZeroOrMorePath</a>(<var>ppe</var>), <var>y</var>:term) =
98819889
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)
@@ -9902,7 +9910,8 @@ <h3>Property Path Patterns</h3>
99029910
result is <var>V</var>
99039911

99049912
ppeval(<var>vx</var>:var, <a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>(<var>ppe</var>), <var>vy</var>:var) =
9905-
{ { (<var>vx</var>, <var>t</var>), (<var>vy</var>, <var>n</var>) } | <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>) }
9913+
{ { (<var>vx</var>, <var>t</var>), (<var>vy</var>, <var>n</var>) } |
9914+
<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>) }
99069915

99079916
ppeval(<var>vx</var>:var, <a href="#defn_ppeOneOrMorePath" class="ppeOp">OneOrMorePath</a>(<var>ppe</var>), <var>y</var>:term) =
99089917
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>)
@@ -9924,7 +9933,8 @@ <h3>Property Path Patterns</h3>
99249933
Let <var>x</var> and <var>y</var> be variables or RDF terms, <var>S</var> a set of IRIs,
99259934
and <var>G</var> the <a href="#defn_ActiveGraph">active graph</a>.
99269935

9927-
ppeval(<var>x</var>, <a href="#defn_ppeNPS" class="ppeOp">NPS</a>(<var>S</var>), <var>y</var>) = { <var>μ</var> | ∃ triple(<var>μ'</var>(<var>μ</var>, <var>x</var>), <var>p</var>, <var>μ'</var>(<var>μ</var>, <var>y</var>)) in <var>G</var>, such that the IRI of <var>p</var> ∉ <var>S</var> }
9936+
ppeval(<var>x</var>, <a href="#defn_ppeNPS" class="ppeOp">NPS</a>(<var>S</var>), <var>y</var>) =
9937+
{ <var>μ</var> | ∃ triple(<var>μ'</var>(<var>μ</var>, <var>x</var>), <var>p</var>, <var>μ'</var>(<var>μ</var>, <var>y</var>)) in <var>G</var>, such that the IRI of <var>p</var> ∉ <var>S</var> }
99289938
</pre>
99299939
</div>
99309940
</section>

0 commit comments

Comments
 (0)