Skip to content

Commit

Permalink
Updated Logical constraints to support ordered collection #206
Browse files Browse the repository at this point in the history
  • Loading branch information
riannella committed Aug 2, 2017
1 parent 9364c87 commit 12830fd
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 14 deletions.
8 changes: 7 additions & 1 deletion model/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1025,13 +1025,14 @@ <h3>Logical Constraint Class</h3>
<li><code>or</code> - at least one of the Constraints MUST be satisfied</li>
<li><code>xone</code> - only one of the Constraints MUST be satisfied</li>
<li><code>and</code> - all of the Constraints MUST be satisfied</li>
<li><code>andSequence</code> - all of the Constraints - in sequence - MUST be satisfied</li>
</ul>

<p>Other <code><em>operand</em></code> sub-properties MAY be defined in the ODRL Common Vocabulary [[!odrl-vocab]] or defined by ODRL Profiles.</p>

<p>The processing model for Logical Constraints includes:</p>
<ol>
<li>The <code><em>operand</em></code> MUST only be of the sub-properties; <code>or</code>, <code>xone</code>, <code>and</code>. Other sub-properties of <code><em>operand</em></code> MAY be defined in the ODRL Common Vocabulary [[!odrl-vocab]] or by ODRL Profiles exclusively for the use of Logical Constraints.</li>
<li>The <code><em>operand</em></code> MUST only be of the sub-properties; <code>or</code>, <code>xone</code>, <code>and</code>, <code>andSequence</code>. Other sub-properties of <code><em>operand</em></code> MAY be defined in the ODRL Common Vocabulary [[!odrl-vocab]] or by ODRL Profiles exclusively for the use of Logical Constraints.</li>
<li>All of the operand values MUST be unique Constraint instances.</li>
<li>The Constraint instances MUST be evaluated and the outcomes used to determine if the logical relationship is satisfied (based on the semantics of the <code><em>operand</em></code> sub-property).</li>
</ol>
Expand Down Expand Up @@ -1068,6 +1069,11 @@ <h3>Logical Constraint Class</h3>
}
</pre>

<p class="note">
When using a logical operand that needs to be evaluated in sequence, such as <code>andSequence</code>, the serialisations MUST preserve the order of the members of the list. In JSON-LD, the <code>@list</code> keyword MUST be used to represent an ordered collection.
</p>


<p class="note">
When Constraints appear at the Policy-level then they MUST only be referenced by a Logical Constraint within an existing Rule. They MUST NOT to be interpreted as Constraints on all the Rules in the Policy.
</p>
Expand Down
10 changes: 5 additions & 5 deletions vocab/ODRL22.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,8 @@ odrl:
skos:prefLabel "Logical Constraint Operands"@en ;
skos:member :or ;
skos:member :xone ;
skos:member :and .
skos:member :and ;
skos:member :andSequence .

<http://www.w3.org/ns/odrl/2/#constraintRelationalOperators>
a skos:Collection ;
Expand All @@ -295,8 +296,7 @@ odrl:
skos:member :isPartOf ;
skos:member :isAllOf ;
skos:member :isAnyOf ;
skos:member :isNoneOf ;
skos:member :andSequence .
skos:member :isNoneOf .

<http://www.w3.org/ns/odrl/2/#constraintRightOpCommon>
a skos:Collection ;
Expand Down Expand Up @@ -926,8 +926,8 @@ odrl:
a :Operator, owl:NamedIndividual, skos:Concept ;
rdfs:isDefinedBy odrl: ;
rdfs:label "And Sequence"@en ;
skos:definition "The relation is satisfied when the left operand Constraint delivers a satisfied result before the right operand Constraint is evaluated. The right operand Constraint may build on the satisfaction of the left operand Constraint."@en ;
skos:note "This operator MUST only be used for Constraints in which both left and right operands MUST also be Constraints. The andSequence operator is an example where there are temporal conditional requirements between the left and right operands. This may lead to situations where the outcome is unresolvable, such as deadlock if one of the Constraints is unable to be satisfied. ODRL Processing systems SHOULD plan for these scenarios and implement mechanisms to resolve them."@en .
skos:definition "The relation is satisfied when each of the Constraints are satisfied in the order specified."@en ;
skos:note "This property MUST only be used for Logical Constraints, and the list of operand values MUST be Constraint instances. The order of the list MUST be preserved. The andSequence operator is an example where there may be temporal conditional requirements between the operands. This may lead to situations where the outcome is unresolvable, such as deadlock if one of the Constraints is unable to be satisfied. ODRL Processing systems SHOULD plan for these scenarios and implement mechanisms to resolve them."@en .

:or
a rdf:Property , owl:ObjectProperty, skos:Concept ;
Expand Down
2 changes: 1 addition & 1 deletion vocab/config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var respecConfig = {
specStatus: "ED",
shortName: "odrl-vocab",
publishDate: "2017-08-01",
publishDate: "2017-08-02",
edDraftURI: "https://w3c.github.io/poe/vocab/",
editors: [
{ name: "Renato Iannella",
Expand Down
14 changes: 7 additions & 7 deletions vocab/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -584,13 +584,6 @@ <h2>ODRL Core Vocabulary</h2>
<tr><th>Identifier:</th> <td><a href="http://www.w3.org/ns/odrl/2/isNoneOf">http://www.w3.org/ns/odrl/2/isNoneOf</a></td></tr>
<tr><th>Class:</th> <td><a href="#term-Operator">Operator</a></td></tr>
</table>
</section><section id="term-andSequence"><h3>And Sequence</h3><table class='def propdef' >
<tr><th>Definition:</th> <td>The relation is satisfied when the left operand Constraint delivers a satisfied result before the right operand Constraint is evaluated. The right operand Constraint may build on the satisfaction of the left operand Constraint.</td></tr>
<tr><th>Label:</th> <td>And Sequence</td></tr>
<tr><th>Identifier:</th> <td><a href="http://www.w3.org/ns/odrl/2/andSequence">http://www.w3.org/ns/odrl/2/andSequence</a></td></tr>
<tr><th>Note:</th> <td>This operator MUST only be used for Constraints in which both left and right operands MUST also be Constraints. The andSequence operator is an example where there are temporal conditional requirements between the left and right operands. This may lead to situations where the outcome is unresolvable, such as deadlock if one of the Constraints is unable to be satisfied. ODRL Processing systems SHOULD plan for these scenarios and implement mechanisms to resolve them.</td></tr>
<tr><th>Class:</th> <td><a href="#term-Operator">Operator</a></td></tr>
</table>
</section></section><section id="constraintLogicalOperands"><h2>Logical Constraint Operands</h2><section id="term-or"><h3>Or</h3><table class='def propdef' >
<tr><th>Definition:</th> <td>The relation is satisfied when at least one of the Constraints is satisfied.</td></tr>
<tr><th>Label:</th> <td>Or</td></tr>
Expand All @@ -612,6 +605,13 @@ <h2>ODRL Core Vocabulary</h2>
<tr><th>Note:</th> <td>This property MUST only be used for Logical Constraints, and the list of operand values MUST be Constraint instances.</td></tr>
<tr><th>Parent property:</th> <td><a href="#term-operand">operand</a></td></tr>
</table>
</section><section id="term-andSequence"><h3>And Sequence</h3><table class='def propdef' >
<tr><th>Definition:</th> <td>The relation is satisfied when each of the Constraints are satisfied in the order specified.</td></tr>
<tr><th>Label:</th> <td>And Sequence</td></tr>
<tr><th>Identifier:</th> <td><a href="http://www.w3.org/ns/odrl/2/andSequence">http://www.w3.org/ns/odrl/2/andSequence</a></td></tr>
<tr><th>Note:</th> <td>This property MUST only be used for Logical Constraints, and the list of operand values MUST be Constraint instances. The order of the list MUST be preserved. The andSequence operator is an example where there may be temporal conditional requirements between the operands. This may lead to situations where the outcome is unresolvable, such as deadlock if one of the Constraints is unable to be satisfied. ODRL Processing systems SHOULD plan for these scenarios and implement mechanisms to resolve them.</td></tr>
<tr><th>Class:</th> <td><a href="#term-Operator">Operator</a></td></tr>
</table>
</section></section><section id="conflictConcepts"><h2>Policy Conflict Strategy</h2><section id="term-ConflictTerm"><h3>Conflict Strategy Preference</h3><table class='def propdef' >
<tr><th>Definition:</th> <td>Used to establish strategies to resolve conflicts that arise from the merging of Policies or conflicts between Permissions and Prohibitions in the same Policy.</td></tr>
<tr><th>Label:</th> <td>Conflict Strategy Preference</td></tr>
Expand Down

0 comments on commit 12830fd

Please sign in to comment.