Skip to content

Add ogc.osc.prov-processing-step: PROV profile for a single geospatial processing step - #17

Closed
nsnarayanam wants to merge 18 commits into
ogcincubator:masterfrom
nsnarayanam:clean-pr-manual
Closed

nsnarayanam wants to merge 18 commits into
ogcincubator:masterfrom
nsnarayanam:clean-pr-manual

Conversation

@nsnarayanam

Copy link
Copy Markdown
Contributor

D104 (Aganitha), Activities 1 and 2. Replaces #16, which carried build output and could not be merged. This branch is synced with master and has the build directory removed, per the contribution guide.

A profile of ogc.ogc-utils.prov constrained to a single geospatial processing step, adding a required processType URI linking the step to a registered process type. That is the link PROV-O and Processes Part 5 do not themselves provide.

Nine examples, all validating, profiled against a drought intelligence workflow we run over Telangana. They form one connected provenance graph with ten resolving links: ingest through VCI and SMDI to CDSI, classification, then model training and inference. Writing the chain out surfaced a real gap, where the combined index consumed an entity no
recorded activity produced, so that step is now included.

Two examples cover machine learning: training generates a fitted model entity, and inference consumes that same entity as an input.

Also included: a one-word fix to _sources/ontology/openscience/bblock.json. It referenced ogc.contrib.stac.extensions.processes-ontology where the STAC register publishes processing-ontology. Correcting it makes the full build pass, all 21 blocks. Worth merging regardless of the block itself. Happy to
split it into its own PR if you would rather keep it separate.

Build links to follow once the Pages deployment completes — Pages is now set to GitHub Actions as discussed.

nsnarayanam and others added 16 commits August 5, 2026 20:05
…es via qualifiedUsage — examples now validate 2/2
# Conflicts:
#	build/annotated/_cache/2ca316da1ef467fe1f43774f3888bce31290b36670e724d47ed42b7b0b32f1b9
#	build/annotated/_cache/769bb14c8b0f7a9d2ed48bab98bb42793e39c648c553b13d694c2d16a570cbc2
#	build/annotated/_cache/9b9f081461b2b99026848a00d04b973d8747f35e6d5bc47cf89049ed3423f61e
#	build/annotated/_cache/b1f672ac1f3ffb4ca4de45f5eaa0e99a40ba897ab98c6b70411e940eaaa6c257
#	build/annotated/osc/api-profiles/processes/sample-implementation/schemas/buffer-geometry/inputDescription/resolvedProperties.json
#	build/annotated/osc/api-profiles/processes/sample-implementation/schemas/buffer-geometry/processDescription/resolvedProperties.json
#	build/annotated/osc/api-profiles/processes/sample-implementation/schemas/inputDescriptions/resolvedProperties.json
#	build/annotated/osc/geodcat-stac-earthcode/common/resolvedProperties.json
#	build/annotated/osc/geodcat-stac-earthcode/experiments/resolvedProperties.json
#	build/annotated/osc/geodcat-stac-earthcode/products/resolvedProperties.json
#	build/annotated/osc/geodcat-stac-earthcode/workflows/resolvedProperties.json
#	build/bblocks.jsonld
#	build/bblocks.ttl
#	build/generateddocs/json-full/osc/api-profiles/processes/ipt/api/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/ipt/execute/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/ipt/results/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/ospd/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/sample-implementation/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/sample-implementation/schemas/buffer-geometry/inputDescription/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/sample-implementation/schemas/buffer-geometry/inputSchema/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/sample-implementation/schemas/buffer-geometry/outputDescription/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/sample-implementation/schemas/buffer-geometry/outputSchema/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/sample-implementation/schemas/buffer-geometry/processDescription/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/sample-implementation/schemas/inputDescriptions/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/sample-implementation/schemas/outputDescriptions/index.json
#	build/generateddocs/json-full/osc/api-profiles/processes/workflow/index.json
#	build/generateddocs/json-full/osc/application-package/index.json
#	build/generateddocs/json-full/osc/geodcat-stac-earthcode/common/index.json
#	build/generateddocs/json-full/osc/geodcat-stac-earthcode/experiments/index.json
#	build/generateddocs/json-full/osc/geodcat-stac-earthcode/products/index.json
#	build/generateddocs/json-full/osc/geodcat-stac-earthcode/workflows/index.json
#	build/generateddocs/json-full/osc/ontology/cwlprov/index.json
#	build/generateddocs/json-full/osc/ontology/openscience/index.json
#	build/generateddocs/markdown/osc/geodcat-stac-earthcode/common/index.md
#	build/generateddocs/markdown/osc/geodcat-stac-earthcode/experiments/index.md
#	build/generateddocs/markdown/osc/geodcat-stac-earthcode/products/index.md
#	build/generateddocs/markdown/osc/geodcat-stac-earthcode/workflows/index.md
#	build/register-summary.md
#	build/register.json
#	build/tests/osc/api-profiles/processes/ipt/api/_report.json
#	build/tests/osc/api-profiles/processes/ipt/execute/_report.json
#	build/tests/osc/api-profiles/processes/ipt/results/_report.json
#	build/tests/osc/api-profiles/processes/ospd/_report.json
#	build/tests/osc/api-profiles/processes/sample-implementation/_report.json
#	build/tests/osc/api-profiles/processes/workflow/_report.json
#	build/tests/osc/application-package/_report.json
#	build/tests/osc/application-package/example_1_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/common/_report.json
#	build/tests/osc/geodcat-stac-earthcode/common/example_1_1.ttl
#	build/tests/osc/geodcat-stac-earthcode/common/example_1_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/experiments/_report.json
#	build/tests/osc/geodcat-stac-earthcode/experiments/example_1_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/experiments/example_2_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/experiments/example_3_1.ttl
#	build/tests/osc/geodcat-stac-earthcode/experiments/example_3_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/experiments/example_4_1.ttl
#	build/tests/osc/geodcat-stac-earthcode/experiments/example_4_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/products/_report.json
#	build/tests/osc/geodcat-stac-earthcode/products/empty-themes-fail.ttl
#	build/tests/osc/geodcat-stac-earthcode/products/empty-themes-fail.validation_failed.txt
#	build/tests/osc/geodcat-stac-earthcode/products/example_1_1.ttl
#	build/tests/osc/geodcat-stac-earthcode/products/example_1_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/products/example_2_1.ttl
#	build/tests/osc/geodcat-stac-earthcode/products/example_2_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/products/invalid-cf-parameters-fail.ttl
#	build/tests/osc/geodcat-stac-earthcode/products/invalid-cf-parameters-fail.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/products/invalid-osc-status-fail.ttl
#	build/tests/osc/geodcat-stac-earthcode/products/invalid-osc-status-fail.validation_failed.txt
#	build/tests/osc/geodcat-stac-earthcode/products/missing-project-fail.ttl
#	build/tests/osc/geodcat-stac-earthcode/products/missing-project-fail.validation_failed.txt
#	build/tests/osc/geodcat-stac-earthcode/products/missing-type-fail.ttl
#	build/tests/osc/geodcat-stac-earthcode/products/missing-type-fail.validation_failed.txt
#	build/tests/osc/geodcat-stac-earthcode/products/valid-cf-parameters.ttl
#	build/tests/osc/geodcat-stac-earthcode/products/valid-cf-parameters.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/workflows/_report.json
#	build/tests/osc/geodcat-stac-earthcode/workflows/example_1_1.ttl
#	build/tests/osc/geodcat-stac-earthcode/workflows/example_1_1.validation_passed.txt
#	build/tests/osc/geodcat-stac-earthcode/workflows/example_2_1.ttl
#	build/tests/osc/geodcat-stac-earthcode/workflows/example_2_1.validation_passed.txt
#	build/tests/osc/ontology/cwlprov/_report.json
#	build/tests/osc/ontology/openscience/_report.json
#	build/tests/report.html
#	build/tests/report.json
@nsnarayanam

Copy link
Copy Markdown
Contributor Author

@rob-metalinkage

@rob-metalinkage rob-metalinkage left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please complete the links in your repo to the build - it has inherited the link to the github pages of the upstream.

Note your master will need to be in sync with PR - but if you have successfully pushed and build on your master branch the the script will create the branch for the PR. Also please provide specific links to the elements in the build you are seeking review on,

Thx

@nsnarayanam

Copy link
Copy Markdown
Contributor Author

All four points addressed.

Master is synced with fork-parent/master and the PR branch is built from it, with the build directory removed so there is nothing to conflict on.

The README link now points at this fork's Pages rather than upstream. That was the inherited link you spotted. Pages source is set to GitHub Actions, and the build is publishing.

Specific links for review:

Block overview https://nsnarayanam.github.io/bblocks-openscience/build/generateddocs/markdown/osc/prov-processing-step/index.md

Schema (annotated) https://nsnarayanam.github.io/bblocks-openscience/build/annotated/osc/prov-processing-step/schema.yaml

JSON-LD context https://nsnarayanam.github.io/bblocks-openscience/build/annotated/osc/prov-processing-step/context.jsonld

Validation report, 9/9 passing https://nsnarayanam.github.io/bblocks-openscience/build/tests/osc/prov-processing-step/_report.json

The two ML examples, which are the ones I would most like a view on. Training generates a fitted model entity and inference consumes that same entity, so the chain closes rather than terminating:

https://nsnarayanam.github.io/bblocks-openscience/build/tests/osc/prov-processing-step/example_7_1.ttl
https://nsnarayanam.github.io/bblocks-openscience/build/tests/osc/prov-processing-step/example_8_1.ttl

One thing worth reporting from this round. Syncing with master brought in the cross-domain-model PROV shapes, which my examples then failed. The qualifiedUsage blank nodes carried prov:entity and prov:hadRole but did not
declare themselves prov:Usage, so sh:class rejected them. Correct PROV in substance, under-specified in the graph. Fixed by typing them explicitly, and all nine pass again.

That seems like the pattern working as intended: an upstream shape reached a downstream profile and caught something my own validation never would have.

Also included, unchanged from before: a one-word fix to _sources/ontology/openscience/bblock.json, which referenced
stac.extensions.processes-ontology where the STAC register publishes processing-ontology. Happy to split that out if you would rather keep it separate.

Noting the PR workflow is awaiting maintainer approval, so the checks here have not run. The links above are to my fork's own build, which has run and passes.

@rob-metalinkage

@rob-metalinkage

Copy link
Copy Markdown
Collaborator

Sorry to be a pain - but please review the instructions again - and maybe we can look at how to improve them. Exercising these is part of the point of the exercise so be assured its a useful contribution.

the gap is:

  • Your fork master should have a complete build and be reviewable via the viewer.
  • your fork config should have a link in the "about" settings as per instructions to your build viewer
  • the create_clean_pr.sh will automatically create a new branch without the build so you dont need to do any build suppression
  • links in review instructions should include the build output - thats the smoke test - use source links at your discretion as well.

If you are using AI to assist, then can you confirm if you are using https://github.com/ogcincubator/ogc-llm-skills or not?

@avillar these skills need to be more prominent via the docs - we discussed improvements. We need to make the skills also walk people through the supported PR processes - is the whole contribution approach part of authoring or a separate skill we can refer to?

Thanks for your persistence - its been informative and together the outcome will be improvements.

@nsnarayanam

Copy link
Copy Markdown
Contributor Author

Superseded.

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.

2 participants