Skip to content

DPROD Contracts: define and fail-closed validate the supported ODRL operator set #237

Description

@jgeluk

Context

Follow-up from #198 (fixme.md items 23 and 31).

The supported ODRL operator surface is inconsistent:

  • docs/policy-writers-guide.md advertises odrl:isAllOf.
  • docs/formal-semantics.md omits isAllOf from both ComparisonOperator and apply.
  • dprod-contracts-shapes.ttl accepts any value typed as an ODRL operator instead of enforcing the evaluator's supported set.
  • Other standard ODRL operators (hasPart, isA, isPartOf) and andSequence are neither implemented nor explicitly rejected.

An accepted policy must never reach an evaluator operation whose semantics are undefined.

Decision required

Define the exact ODRL comparison and logical-constraint surface supported by DPROD Contracts. Every supported construct must have formal evaluation semantics; every unsupported construct must fail SHACL validation.

Acceptance criteria

  1. Add regression tests first showing that isAllOf is currently documented but not represented by the formal evaluator, and that an unsupported operator currently passes validation.
  2. Publish one normative supported-operator matrix.
  3. Add formal semantics for every supported operator, including isAllOf if retained.
  4. Add SHACL allow-list validation and hard-error on unsupported operators and logical operands.
  5. Align the ontology, specification, writer guide, examples, and formal semantics with that matrix.
  6. Existing examples continue to validate.

Unknown operators must not be treated as false, ignored, or delegated to an unspecified fallback.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Data ContractsWork related to DPROD data contracts, agreements, data rights, and the ODRL profile.modelingModeling decisions & ontology designshapesSHACL shapes and validation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions