Skip to content

feat(gen-owl): emit DCMI agent metadata as IRIs - #36

Open
jdsika wants to merge 1 commit into
feat/owlgen-iri-valued-metadatafrom
feat/owlgen-dcmi-agent-iris
Open

jdsika wants to merge 1 commit into
feat/owlgen-iri-valued-metadatafrom
feat/owlgen-dcmi-agent-iris

Conversation

@jdsika

@jdsika jdsika commented Oct 2, 2026

Copy link
Copy Markdown

Summary

Stacked on #33 (base feat/owlgen-iri-valued-metadata); the diff is the delta only. Refs linkml#3546.

DCMI Metadata Terms give dcterms:creator, dcterms:contributor, dcterms:publisher and dcterms:rightsHolder the range dcterms:Agent: their value is a resource, like the properties #33 emits as IRIs. As annotations they still came out as literals, so an ontology header could name its publisher only as "https://..." text.

They join IRI_VALUED_METADATA_PROPERTIES. As for every property in it, a value that is an absolute IRI or a CURIE with a declared prefix becomes an IRI, and an agent named in plain text keeps its literal:

annotations:
  dcterms:creator: The Example Team
  dcterms:publisher: https://example.org/team
<https://example.org/onto/v2>
    dcterms:creator "The Example Team" ;
    dcterms:publisher <https://example.org/team> .

The contributors metamodel slot (dcterms:contributor, range uriorcurie) already emitted IRIs; this makes the same property behave the same way as an annotation.

How was this tested?

  • test_iri_valued_metadata_is_emitted_as_iris asserts dcterms:publisher (absolute IRI) and dcterms:rightsHolder (expanded CURIE) as IRIs; both assertions fail without the change.
  • test_literal_valued_metadata_stays_literal keeps dcterms:creator: The Example Team as a literal.
  • pytest tests/linkml/test_generators -m "not kroki": 1776 passed, 41 skipped, 3 xfailed.
  • pytest tests/linkml/test_base/test_metamodel.py tests/linkml/test_biolink_model --with-slow --with-biolink: 21 passed, 2 skipped; meta.owl and biolink.owl.ttl unchanged (neither carries DCMI agent annotations).
  • ruff check and ruff format --check (0.11.13) clean.

Areas of uncertainty

  • Other DCMI properties have non-literal ranges too (dcterms:rights, dcterms:language, dcterms:audience, …). They are left out: their values are commonly written as text, and the list stays limited to properties whose values are resources that are linked to.

Checklist

  • My code follows the contributor guidelines
  • I have added tests that prove my fix/feature works
  • Existing tests pass locally with my changes

AI Assistance

If you used AI tools while preparing this PR, you are still the author and responsible for understanding, verifying, and defending your submission. Please engage with reviewers personally rather than through your agent during feedback and revisions. See our AI Covenant for details.

DCMI Metadata Terms give dcterms:creator, dcterms:contributor,
dcterms:publisher and dcterms:rightsHolder the range dcterms:Agent, so their
value is a resource, like the properties gen-owl already emits as IRIs. As an
annotation they still came out as literals: an ontology header could name its
publisher only as "https://..." text, and an ORCID or organisation IRI given
as dcterms:creator was not followable.

They join the IRI-valued metadata properties: a value that is an absolute
IRI or a CURIE with a declared prefix is emitted as an IRI; an agent named in
plain text keeps its literal.

Refs: linkml#3546
Signed-off-by: jdsika <carlo.van-driesten@vdl.digital>
@jdsika jdsika self-assigned this Oct 2, 2026
jdsika added a commit to ASCS-eV/ontology-management-base that referenced this pull request Oct 2, 2026
Moves linkml and linkml-runtime to feat/envited-x-pipeline at e3081ef8b,
which adds ASCS-eV/linkml#36 (stacked on #33): gen-owl emits
dcterms:creator, dcterms:contributor, dcterms:publisher and
dcterms:rightsHolder as IRIs when their value is an IRI, as DCMI gives them
the range dcterms:Agent. A value in plain text keeps its literal.

No committed artifact changes: no schema uses these terms with an IRI yet.

Signed-off-by: jdsika <carlo.van-driesten@vdl.digital>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant