Skip to content

Commit 27b1d9f

Browse files
author
Eric Prud'hommeaux
committed
+ selectively s/MUST/SHALL/
1 parent 638be2c commit 27b1d9f

File tree

2 files changed

+21
-21
lines changed

2 files changed

+21
-21
lines changed

index.html

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ <h2>Conformance</h2>
171171
specification is normative.</p>
172172

173173
<p>
174-
All ShEx documents MUST conform to the <a href="#schema-requirements" class="sectionRef">Schema Requirements</a>.
174+
All ShEx documents <span class="MUST">MUST</span> conform to the <a href="#schema-requirements" class="sectionRef">Schema Requirements</a>.
175175
Additional constraints for the specific types of ShEx documents (<a>ShExC</a>, <a>ShExJ</a>, and <a>ShExR</a>) follow:
176176
</p>
177177

@@ -236,7 +236,7 @@ <h3>Definitions</h3>
236236
<span class="math"><dfn>predicates</dfn>(G, n)</span> is the set of <a data-lt="predicate">predicates</a> in <span class="math"><a>neigh</a>(G, n)</span>.<br/><span class="math"><a>predicates</a>(G, n) = <a>predicatesOut</a>(G, n) ∪ <a>predicatesIn</a>(G, n)</span>.
237237
</li>
238238
<li>
239-
<span class="math"><dfn>def</dfn>(Sch, label)</span> is the <span class="math">decl</span>.<span class="param">shapeExpr</span> where <span class="math">decl</span>.<span class="param">label</span> = <code>label</code>. <code>Sch</code> must have exactly one <code>def(Sch, label)</code>.
239+
<span class="math"><dfn>def</dfn>(Sch, label)</span> is the <span class="math">decl</span>.<span class="param">shapeExpr</span> where <span class="math">decl</span>.<span class="param">label</span> = <code>label</code>. Per the <a href="#shapeExprRef-requirement">Shape Expression Reference Requirement</a>, <code>Sch</code> has exactly one <code>def(Sch, label)</code>.
240240
</li>
241241
<li>
242242
<dfn data-lt="shapemap|fixed ShapeMap" data-dfn-type="dfn" id="dfn-shapemap" data-no-export=""><a href="http://shex.io/shape-map/#dfn-fixed-shapemap">fixed ShapeMap</a></dfn> is a list of pairs of RDF node label and shape expression label as defined in the [[!shape-map]] specification.
@@ -411,7 +411,6 @@ <h3>References</h3>
411411
<a class="nobjref">tripleExpr</a> = <a class="objref">EachOf</a> | ... | <a class="nobjref">tripleExprRef</a> ;
412412
<a class="nob">tripleExprRef</a> = <a class="objref">tripleExprLabel</a> ;</div>
413413
<p>
414-
An object with a circular reference must be referenced by an <span class="param">id</span>.
415414
This example uses a nested shape reference on a value expression (<a data-lt="TripleConstraint">defined below</a>).
416415
</p>
417416
<div class="json">
@@ -422,9 +421,7 @@ <h3>References</h3>
422421
"valueExpr": "<span class="lookit">http://schema.example/#IssueShape</span>", "min": 0 } } ] }</pre>
423422
</div>
424423
<p>
425-
Not captured in this JSON syntax definition is the rule that every <a class="nobjref">shapeExpr</a> nested in a schema's <a class="param">shapes</a> must have an <span class="param">id</span> and no other <a class="nobjref">shapeExpr</a> may have an <span class="param">id</span>.
426-
The JSON syntax definitition simplifies this by adding <span style="border: thin solid #888888; background-color: #F8F8F0;"><a class="param">id</a>:<a class="nobjref">shapeExprLabel</a>?</span> to every <a class="nobjref">shapeExpr</a>.
427-
This example includes a nested shape. Nested shapes are not permitted to have <span class="param">ids</span>.
424+
This example includes a nested shape.
428425
</p>
429426
<div class="json">
430427
<pre class="json nohighlight">{ "type": "Schema", "shapes": [
@@ -1006,7 +1003,7 @@ <h4>Node Kind Constraints</h4>
10061003
<h4>Datatype Constraints</h4>
10071004
<p id="nodeSatisfies-datatype">
10081005
For a node <span class="math">n</span> and constraint value <span class="math">v</span>, <code class="function">nodeSatisfies(<span class="math">n</span>, <span class="math">v</span>)</code> if <span class="math">n</span> is a Literal with the datatype <span class="math">v</span> and, if <span class="math">v</span> is in the set of <a data-cite="sparql11-query#operandDataTypes">SPARQL operand data types</a>[[!sparql11-query]], an XML schema string with a value of the lexical form of <span class="math">n</span> can be cast to the target type <span class="math">v</span> per <a data-cite="xpath-functions-31#casting">XPath Functions 3.1 section 19 Casting</a>[[!xpath-functions]].
1009-
The lexical form and numeric value (where applicable) of all datatypes required by <a data-cite="sparql11-query#FunctionMapping">SPARQL XPath Constructor Functions</a> MUST be tested for conformance with the corresponding XML Schema form.
1006+
The lexical form and numeric value (where applicable) of all datatypes required by <a data-cite="sparql11-query#FunctionMapping">SPARQL XPath Constructor Functions</a> <span class="MUST">MUST</span> be tested for conformance with the corresponding XML Schema form.
10101007
ShEx extensions MAY add support for other datatypes.
10111008
</p>
10121009

@@ -1345,7 +1342,7 @@ <h4>Values Constraint</h4>
13451342

13461343
<div class="example">
13471344
<div class="example-title marker"><span>Values Constraint example 2</span></div>
1348-
<p>An employee must have an email address that is the string "N/A" or starts with "engineering-" or "sales-" but not "sales-contacts" or "sales-interns":</p>
1345+
<p>This schema requires an employee to have an email address that is the string "N/A" or starts with "engineering-" or "sales-" but not "sales-contacts" or "sales-interns":</p>
13491346
<div class="repchoice">
13501347
<pre class="json nohighlight">{ "type": "Schema", "shapes": [
13511348
{ "id": "http://schema.example/#EmployeeShape",
@@ -1394,7 +1391,7 @@ <h4>Values Constraint</h4>
13941391

13951392
<div class="example">
13961393
<div class="example-title marker"><span>Values Constraint example 3</span></div>
1397-
<p>An employee must not have an email address that starts with "engineering-" or "sales-":</p>
1394+
<p>This schema requires an employee to have an email address that starts with "engineering-" or "sales-":</p>
13981395
<div class="repchoice">
13991396
<pre class="json nohighlight">{ "type": "Schema", "shapes": [
14001397
{ "id": "http://schema.example/#EmployeeShape",
@@ -2123,7 +2120,7 @@ <h4>Shape Expression Reference Requirement</h4>
21232120
</li>
21242121
</ul>
21252122
<p>
2126-
A shapes schema MUST NOT define a shape label <span class="math">sl</span> that belongs to the shapeExprRef closure of its definition <code class="function">shapeExprWithId(<span class="math">sl</span>)</code>.
2123+
A shapes schema <span class="MUST">MUST</span> NOT define a shape label <span class="math">sl</span> that belongs to the shapeExprRef closure of its definition <code class="function">shapeExprWithId(<span class="math">sl</span>)</code>.
21272124
</p>
21282125

21292126
<div class="example">
@@ -2322,7 +2319,7 @@ <h4>Shape Expression Reference Requirement</h4>
23222319

23232320
<section id="tripleExprRef-requirement">
23242321
<h4>Triple Expression Reference Requirement</h4>
2325-
<p>An <span class="jobjref"><a>tripleExprRef</a></span> MUST identify a <a>triple expression</a> in the schema.
2322+
<p>An <span class="jobjref"><a>tripleExprRef</a></span> <span class="MUST">MUST</span> identify a <a>triple expression</a> in the schema.
23262323
The function <code><dfn>tripleExprWithId</dfn>(<span class="math">tripleExprRef</span>)</code> returns the <a>triple expression</a> with the id <span class="math">tripleExprRef</span>.
23272324
</p>
23282325

@@ -2341,7 +2338,7 @@ <h4>Triple Expression Reference Requirement</h4>
23412338
</li>
23422339
</ul>
23432340
<p>
2344-
A shapes schema MUST NOT define a triple expression label <span class="math">tl</span> that belongs to the tripleExprRef closure of its definition <code class="function">tripleExprWithId(<span class="math">tl</span>)</code>.
2341+
A shapes schema <span class="MUST">MUST</span> NOT define a triple expression label <span class="math">tl</span> that belongs to the tripleExprRef closure of its definition <code class="function">tripleExprWithId(<span class="math">tl</span>)</code>.
23452342
</p>
23462343

23472344
<div class="example">
@@ -2420,7 +2417,7 @@ <h4>Triple Expression Reference Requirement</h4>
24202417
<section id="shapeExprRef-non-abstract-shape-requirement">
24212418
<h4>shapeExprRef non-abstract shape requirement</h4>
24222419
<p>
2423-
Every <a>shapeExprRef</a> |referer| MUST identify at least one non-abstract shape.
2420+
Every <a>shapeExprRef</a> |referer| <span class="MUST">MUST</span> identify at least one non-abstract shape.
24242421
</p>
24252422

24262423
<div class="example">
@@ -2574,8 +2571,8 @@ <h4>shapeExprRef non-abstract shape requirement</h4>
25742571
<section id="negation-requirement">
25752572
<h4>Negation Requirement</h4>
25762573
<p>
2577-
A schema MUST NOT contain any <a>shapeExprLabel</a> that has a <a>negated reference</a> to itself, either directly or transitively.
2578-
This is formalized by the requirement that the <a>hierarchy and dependency graph</a> of a schema MUST NOT have a cycle that traverses some <a>negated reference</a>.
2574+
A schema <span class="MUST">MUST</span> NOT contain any <a>shapeExprLabel</a> that has a <a>negated reference</a> to itself, either directly or transitively.
2575+
This is formalized by the requirement that the <a>hierarchy and dependency graph</a> of a schema <span class="MUST">MUST</span> NOT have a cycle that traverses some <a>negated reference</a>.
25792576
</p>
25802577

25812578
<p class="leadup">
@@ -3074,7 +3071,7 @@ <h3 class="followup">Examples with <span class="jobjref"><a>Shape</a></span><spa
30743071
<section id="acyclic-extension-requirement">
30753072
<h4>Acyclic Extension Requirement</h4>
30763073

3077-
<p>The <a>extension hierarchy graph</a> must be acyclic.</p>
3074+
<p>The <a>extension hierarchy graph</a> <span class="MUST">MUST</span> be acyclic.</p>
30783075
</section>
30793076

30803077
<section id="extension-coherence-requirement">
@@ -4270,7 +4267,7 @@ <h4>Repeated Property With Dependent Shapes Example</h4>
42704267
<section id="example-negation">
42714268
<h4>Negation Example</h4>
42724269
<p>
4273-
Setting the maximum <a>cardinality</a> of a TripleConstraint with <a>predicate</a> <span class="math">p</span> to zero (i.e. <span>"max": 0</span> in <a>ShExJ</a> or <code>{0}</code> or <code>{0, 0}</code> in <a>ShExC</a>) asserts that matching nodes must have no triples with <a>predicate</a> <span class="math">p</span>.
4270+
Setting the maximum <a>cardinality</a> of a TripleConstraint with <a>predicate</a> <span class="math">p</span> to zero (i.e. <span>"max": 0</span> in <a>ShExJ</a> or <code>{0}</code> or <code>{0, 0}</code> in <a>ShExC</a>) asserts that matching nodes have no triples with <a>predicate</a> <span class="math">p</span>.
42744271
</p>
42754272
<!--
42764273
BASE <http://schema.example/#>
@@ -4996,7 +4993,7 @@ <h2>ShEx Compact syntax (ShExC)</h2>
49964993
<tr><td colspan="4">
49974994
<p>
49984995
Value sets identify ranges of RDF nodes by explicit inclusion or by range (indicated by "<code>~</code>").
4999-
Ranges may include exclusions, which may also be ranges but must not in turn contain exclusions.
4996+
Ranges may include exclusions, which may also be ranges but <span class="MUST">MUST</span> NOT in turn contain exclusions.
50004997
A <a class="param">valueSetValue</a> may be an <a class="param">objectValue</a> or one of <a class="param">IriStem</a>, <a class="param">IriStemRange</a>, <a class="param">LiteralStem</a>, <a class="param">LiteralStemRange</a>, <a class="param">LanguageStem</a>, <a class="param">LanguageStemRange</a>, .
50014998
</p>
50024999
</td></tr>
@@ -5016,7 +5013,7 @@ <h2>ShEx Compact syntax (ShExC)</h2>
50165013
<td>  <code class="content"><span class="prod"><a class="grammarRef" href="#prod-iriRange">iriRange</a></span> | <span class="prod"><a class="grammarRef" href="#prod-literalRange">literalRange</a></span><br />
50175014
| <span class="prod"><a class="grammarRef" href="#prod-languageRange">languageRange</a></span> | <span class="prod"><a class="grammarRef" href="#prod-exclusion">exclusion</a></span>+</code></td>
50185015
</tr>
5019-
<tr class="params"><td></td><td colspan="3">If "<code>.</code>" matches and <span class="prod"><a class="grammarRef" href="#prod-exclusion">exclusion</a></span> matches one or more times, all matched items must be consistently iri, literal, or language. <code class="production prod">valueSetValue</code> returns either a <a class="obj">IriStemRange</a>, <a class="obj">LiteralStemRange</a>, or <a class="obj">LanguageStemRange</a> object with <span class="param">exclusions</span> equal to the set of results of <span class="prod"><a class="grammarRef" href="#prod-exclusion">exclusion</a></span>:</td></tr>
5016+
<tr class="params"><td></td><td colspan="3">If "<code>.</code>" matches and <span class="prod"><a class="grammarRef" href="#prod-exclusion">exclusion</a></span> matches one or more times, all matched items <span class="MUST">MUST</span> be consistently <code>iri</code>, <code>literal</code>, or <code>language</code>. <code class="production prod">valueSetValue</code> returns either a <a class="obj">IriStemRange</a>, <a class="obj">LiteralStemRange</a>, or <a class="obj">LanguageStemRange</a> object with <span class="param">exclusions</span> equal to the set of results of <span class="prod"><a class="grammarRef" href="#prod-exclusion">exclusion</a></span>:</td></tr>
50205017
<tr class="obj"><td></td><td><a class="obj">IriStemRange</a></td><td>{</td><td><span class="param">stem</span>:(<a>IRIREF</a> | <a class="objref">Wildcard</a>) <span class="param">exclusions</span>:[<a class="nobref">IRIREF</a>|<a class="objref">IriStem</a> +] }</td></tr>
50215018
<tr class="obj"><td></td><td><a class="obj">LiteralStemRange</a></td><td>{</td><td><span class="param">stem</span>:(<a class="nobref">STRING</a> | <a class="objref">Wildcard</a>) <span class="param">exclusions</span>:[<a class="nobref">STRING</a>|<a class="objref">LiteralStem</a> +] }</td></tr>
50225019
<tr class="obj"><td></td><td><a class="obj">LanguageStemRange</a></td><td>{</td><td><span class="param">stem</span>:(<a>LANGTAG</a> | <a class="objref">Wildcard</a>) <span class="param">exclusions</span>:[<a class="nobref">LANGTAG</a>|<a class="objref">LanguageStem</a> +] }</td></tr>
@@ -5134,7 +5131,7 @@ <h2>ShEx Compact syntax (ShExC)</h2>
51345131
<td>   ::=   </td>
51355132
<td><code class="content">'&amp;' <span class="prod"><a class="grammarRef" href="#prod-tripleExprLabel">tripleExprLabel</a></span></code></td>
51365133
</tr>
5137-
<tr class="params"><td></td><td colspan="3">Per the <a href="#tripleExprRef-requirement">triple expression refrence requirement</a>, <span class="param">tripleExprLabel</span> property MUST appear in the schema's <a class="param">shapes</a> map and the corresponding <a>triple expression</a> MUST be a <span class="jobjref"><a>Shape</a></span> with a <span class="param">tripleExpr</span>.</td></tr>
5134+
<tr class="params"><td></td><td colspan="3">Per the <a href="#tripleExprRef-requirement">triple expression refrence requirement</a>, <span class="param">tripleExprLabel</span> property <span class="MUST">MUST</span> appear in the schema's <a class="param">shapes</a> map and the corresponding <a>triple expression</a> <span class="MUST">MUST</span> be a <span class="jobjref"><a>Shape</a></span> with a <span class="param">tripleExpr</span>.</td></tr>
51385135
<tr class="obj"><td></td><td><a class="obj">tripleExprRef</a></td><td>=</td><td><a class="nobref">tripleExprLabel</a> ;</td></tr>
51395136
</tbody>
51405137

@@ -5744,7 +5741,7 @@ <h2>ShEx JSON Syntax (ShExJ)</h2>
57445741
<p>
57455742
A ShExJ document is a JSON-LD [[!JSON-LD]] document which uses a proscribed structure to define a <a>schema</a> containing <a>shape expressions</a> and <a>triple expressions</a>.
57465743
A ShExJ document MAY include an <code>@context</code> property referencing <code>http://www.w3.org/ns/shex.jsonld</code><!-- , and MAY include additional contexts and term definitions -->.
5747-
In the absense of a top-level <code>@context</code>, ShEx Processors MUST act as if a <code>@context</code> property is present with the value <code>http://www.w3.org/ns/shex.jsonld</code>.
5744+
In the absense of a top-level <code>@context</code>, ShEx Processors <span class="MUST">MUST</span> act as if a <code>@context</code> property is present with the value <code>http://www.w3.org/ns/shex.jsonld</code>.
57485745
</p>
57495746

57505747
<p>

scripts.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ $(document).ready(function () {
144144
},
145145
1000
146146
);
147+
for (elt of [...document.querySelectorAll('.MUST')]) {
148+
elt.innerText = "SHALL";
149+
}
147150
});
148151

149152
function toggle (from, key) {

0 commit comments

Comments
 (0)