Repository navigation
Integrate Data Contracts into the specification - #259
Merged
Merged
Conversation
State on dprod:subjectOfDuty that an omitted bearer defaults to the dprod:dataProductOwner of the data product the policy applies to. Resolves: #240 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Add DutyOnlyPropertiesShape, targeting the subjects of dprod:deadline, dprod:recurrence, dprod:subjectOfDuty and dprod:objectOfDuty. The subject must be an odrl:Duty and must not be an odrl:Permission or odrl:Prohibition, so the OWL domain can no longer silently infer a second, ODRL-disjoint rule type onto a misused rule. Regression tests cover each property on a Permission and a Prohibition, and keep valid named and inline duties conformant. Resolves: #239 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ROD/ Reverts the vocabulary move to .../DPROD/dprod/ made for #204 in #205. The OMG namespace for the ontology is the bare spec IRI; the /dprod/ segment was introduced only for symmetry with /shapes/ and is not the published namespace. The versioned ontology IRI follows suit (.../DPROD/20260601/). The shapes, contracts shapes and data namespaces are unchanged, as is the archived 1.0 snapshot under site/public. Applied across the ontology, shapes, contracts profile, examples, docs, tests, the spec generator namespace constant and the ReSpec template. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The OMG spec URL serves only the catalogue page: dprod-context.jsonld and the ontology files 404 there (#232), so no example could be expanded from its published @context. Point every example, the spec document, the adopt page and the example test at https://ekgf.org/dprod/spec/develop/dprod-context.jsonld, which serves the context as application/ld+json with open CORS. Verified by expanding every example against the live context with no local substitution. The vocabulary namespace stays https://www.omg.org/spec/DPROD/; only the artifact location changes. The retired-URL test now also rejects the OMG context URL. Relates to #232, #246 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The namespace IRI and the URL that serves the artifacts must match, and https://www.omg.org/spec/DPROD/ serves nothing but the catalogue page (#232). Until OMG hosts the artifacts, the namespace is the develop spec URL on ekgf.org, which serves the spec, the ontology and shapes in Turtle, JSON-LD and RDF/XML, and the JSON-LD context. Every IRI rooted at the OMG spec URL moves with it: the vocabulary, the shapes and contracts shapes namespaces, the data namespace, the ODRL profile IRI and the version IRIs. The ReSpec latestVersion link stays on the OMG catalogue entry, which is a document link rather than a namespace. The archived 1.0 snapshot under site/public is unchanged. Relates to #232, #210 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The profile's odrl:conflict odrl:prohibit is documented as the default: if a permission and a prohibition both match, the prohibition wins. A policy may declare its own odrl:conflict to override that default for its rules. No SHACL rejection is added; a per-policy override validates. Resolves: #197 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Render the Data Contracts profile as its own part of the spec: the contracts classes and extension properties from the contracts shapes, a generated model diagram, and seven worked examples under examples/contracts/ ordered so that each builds on the last. Only DPROD-defined classes render as class definitions; the profile's constraints on ODRL classes are described in prose. The JSON-LD context now covers the contracts vocabulary. Resolves: #258 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tonyseale
requested review from
FroehlichMarcel,
jgeluk,
joshcornejo,
matthiasautrata and
rivettp
as code owners
September 24, 2026 16:52
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
matthiasautrata
approved these changes
Sep 24, 2026
Contributor
Author
|
Review requested from the DPROD team: please review the Data Contracts part of the specification in particular. Where to look
Questions the review should answer
Comments inline on the diff or here in the thread are both fine. |
This was referenced Oct 12, 2026
tonyseale
pushed a commit
to matthiasautrata/dprod
that referenced
this pull request
Oct 29, 2026
A readability pass over the text added in EKGF#259 and EKGF#261: - Prohibition-wins is the profile's default conflict strategy, not a fixed rule (EKGF#197, EKGF#279). The overview bullet and the data use policy example now say "by default". - The deterministic-evaluation bullet leads with its claim and is split into sentences. - The overview says that lifecycle status and duty state share the same four optional concepts but use different properties, which the "kept apart on purpose" sentence left unexplained. - A DPROD-aware processor "evaluates" rather than "enforces" (EKGF#263). - The figure sentence had an "it" with no antecedent. - Two descriptions went stale when EKGF#261 simplified the examples: the data offer example has no domain vocabulary, parties or duty instances, and only some examples declare terms inline. - The data offer README listed four points after "Three things", and repeated the spec's note on plain ODRL names almost verbatim. - Typos: "soem", "[[dprod]]]". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves: #258
Also resolves #240, #239 and #197, and records a namespace decision on #232.
Summary
examples/contracts/ordered so each builds on the last. Only DPROD-defined classes render as class definitions; the profile's constraints on ODRL classes are described in prose. The JSON-LD context now covers the contracts vocabulary.https://ekgf.org/dprod/spec/develop/. The namespace IRI and the URL that serves the artifacts must match, and the OMG spec URL serves only the catalogue page (DPROD artifacts fail to resolve at their OMG NS URLs. Return 404 #232). Every IRI rooted at the OMG URL moves with it: vocabulary, shapes, contracts shapes, data namespace, ODRL profile IRI, version IRIs and every example@context. This also reverses the.../DPROD/dprod/move from Ontology IRI: move vocabulary to DPROD/dprod and drop hyphens from versioned URIs #204. The ReSpeclatestVersionlink stays on the OMG catalogue entry; the archived 1.0 snapshot is unchanged.dprod:subjectOfDutydocuments that an omitted bearer defaults to the data product owner.DutyOnlyPropertiesShaperejectsdprod:deadline,dprod:recurrence,dprod:subjectOfDutyanddprod:objectOfDutyon a Permission or Prohibition, with explicitsh:notchecks so RDFS inference from the OWL domain cannot make a misused rule conform. Regression tests cover all eight misuse cases plus valid named and inline duties.odrl:conflict odrl:prohibiton the profile is documented as the default; a policy may declare its ownodrl:conflictto override. No SHACL rejection.Verification
python -m unittest discover -s tests: 22 passpython -m unittest discover -s dprod-contracts/tests: 49 passdprod-contracts/validate.py: all examples validatedprod-context.jsonldon ekgf.org with no local substitutionNotes for reviewers
.../develop/DataProductand theshapes/anddata/sub-paths still 404 on ekgf.org, as they did on OMG. Dereferencing terms needs routing on the site and is out of scope here.dprod:recurrencefromDutyOnlyPropertiesShape.🤖 Generated with Claude Code