diff --git a/.github/workflows/publish-models-release.yml b/.github/workflows/publish-models-release.yml index 7d2a3ee0f..48a25636c 100644 --- a/.github/workflows/publish-models-release.yml +++ b/.github/workflows/publish-models-release.yml @@ -172,10 +172,12 @@ jobs: fi release_file="results/ontouml-models-${release_tag}.ttl" + latest_release_file="results/ontouml-models-latest.ttl" { echo "release_tag=$release_tag" echo "release_file=$release_file" + echo "latest_release_file=$latest_release_file" echo "dry_run=$dry_run" echo "publish_release=$publish_release" echo "force_release=$force_release" @@ -188,6 +190,7 @@ jobs: echo "Release tag: $release_tag" echo "Release file: $release_file" + echo "Latest release file: $latest_release_file" echo "Dry run: $dry_run" echo "Publish release: $publish_release" echo "Force release: $force_release" @@ -257,30 +260,40 @@ jobs: echo "release_already_published=$release_already_published" >> "$GITHUB_OUTPUT" - - name: Generate release file + - name: Generate release files if: ${{ steps.settings.outputs.should_generate == 'true' }} run: | set -euo pipefail + release_file="${{ steps.settings.outputs.release_file }}" + latest_release_file="${{ steps.settings.outputs.latest_release_file }}" + python scripts/generate_release_file.py . \ --release-tag "${{ steps.settings.outputs.release_tag }}" \ --output-dir results \ --list-files + cp -- "$release_file" "$latest_release_file" - - name: Validate generated release Turtle + - name: Validate generated release Turtle files if: ${{ steps.settings.outputs.should_generate == 'true' }} run: | set -euo pipefail - test -s "${{ steps.settings.outputs.release_file }}" - python - <<'PY' + release_file="${{ steps.settings.outputs.release_file }}" + latest_release_file="${{ steps.settings.outputs.latest_release_file }}" + + test -s "$release_file" + test -s "$latest_release_file" + cmp -- "$release_file" "$latest_release_file" + python - "$release_file" "$latest_release_file" <<'PY' from pathlib import Path + import sys from rdflib import Graph - path = Path("${{ steps.settings.outputs.release_file }}") - - graph = Graph() - graph.parse(path, format="turtle") - print(f"Parsed release graph with {len(graph)} triples.") + paths = [Path(value) for value in sys.argv[1:]] + for path in paths: + graph = Graph() + graph.parse(path, format="turtle") + print(f"Parsed {path} with {len(graph)} triples.") PY - name: Upload release artifact @@ -288,7 +301,9 @@ jobs: uses: actions/upload-artifact@v4 with: name: ontouml-models-release-${{ steps.settings.outputs.release_tag }} - path: ${{ steps.settings.outputs.release_file }} + path: | + ${{ steps.settings.outputs.release_file }} + ${{ steps.settings.outputs.latest_release_file }} if-no-files-found: error retention-days: 30 @@ -298,11 +313,12 @@ jobs: GH_TOKEN: ${{ github.token }} RELEASE_TAG: ${{ steps.settings.outputs.release_tag }} RELEASE_FILE: ${{ steps.settings.outputs.release_file }} + LATEST_RELEASE_FILE: ${{ steps.settings.outputs.latest_release_file }} FINAL_RELEASE_SHA: ${{ steps.catalog.outputs.final_release_sha }} run: | set -euo pipefail - gh release create "$RELEASE_TAG" "$RELEASE_FILE" \ + gh release create "$RELEASE_TAG" "$RELEASE_FILE" "$LATEST_RELEASE_FILE" \ --target "$FINAL_RELEASE_SHA" \ --title "$RELEASE_TAG" \ --generate-notes diff --git a/README.md b/README.md index 5a9ff9111..234b7e89e 100644 --- a/README.md +++ b/README.md @@ -15,33 +15,29 @@ Also known as the FAIR Model Catalog for Ontology-Driven Conceptual Modeling Res | Run repository maintenance tools | [Script index and setup](scripts/README.md) | > [!IMPORTANT] -> **Current source of catalog data:** This GitHub repository is the catalog's actively maintained and regularly updated **storage, distribution, and contribution layer**. The separately operated [FAIR Data Point (FDP)](https://w3id.org/ontouml-models) has not been updated since its initial release, is currently outdated, and has no planned update or synchronization work at this time. Use this repository and its releases for current catalog content. See the [documentation index](documentation/README.md) for the full reader paths. +> **Current source of catalog data:** This GitHub repository is the catalog's actively maintained and regularly updated **storage, distribution, and contribution layer**. The separately operated [FAIR Data Point (FDP)](https://w3id.org/ontouml-models/fdp/) has not been updated since its initial release, is currently outdated, and has no planned update or synchronization work at this time. Use this repository and its releases for current catalog content. See the [documentation index](documentation/README.md) for the full reader paths. > [!NOTE] > **Community dashboard:** The existing [catalog dashboard](http://w3id.org/ontouml-models/dashboard) is a community-contributed companion project that provides another view of the catalog. It is independently operated, is not an official component of the OntoUML/UFO Catalog, and may lag behind the maintained GitHub repository. It remains linked here in recognition of that contribution. ## Table of Contents -- [OntoUML/UFO Catalog](#ontoumlufo-catalog) - - [Table of Contents](#table-of-contents) - - [Catalog’s Content](#catalogs-content) - - [Data Organization](#data-organization) - - [Catalog Releases](#catalog-releases) - - [Data Schemas](#data-schemas) - - [OntoUML Metamodel](#ontouml-metamodel) - - [OntoUML Schema](#ontouml-schema) - - [Models in Linked Data](#models-in-linked-data) - - [Metadata](#metadata) - - [FAIR Data Point: The Data Discovery Service](#fair-data-point-the-data-discovery-service) - - [Catalog's Persistent URLs](#catalogs-persistent-urls) - - [How to Contribute](#how-to-contribute) - - [Contribute by Submitting an Ontology](#contribute-by-submitting-an-ontology) - - [Other Ways to Contribute](#other-ways-to-contribute) - - [Relevant Associated Works](#relevant-associated-works) - - [Catalog administration](#catalog-administration) - - [How to Cite this Catalog](#how-to-cite-this-catalog) - - [Acknowledgements](#acknowledgements) - - [License disclaimer](#license-disclaimer) +- [Table of Contents](#table-of-contents) +- [Catalog’s Content](#catalogs-content) + - [Data Organization](#data-organization) + - [Catalog Releases](#catalog-releases) + - [Data Schemas](#data-schemas) + - [Metadata](#metadata) + - [FAIR Data Point: The Data Discovery Service](#fair-data-point-the-data-discovery-service) +- [Catalog's Persistent URLs](#catalogs-persistent-urls) +- [How to Contribute](#how-to-contribute) + - [Contribute by Submitting an Ontology](#contribute-by-submitting-an-ontology) + - [Other Ways to Contribute](#other-ways-to-contribute) +- [Relevant Associated Works](#relevant-associated-works) +- [Catalog administration](#catalog-administration) +- [How to Cite this Catalog](#how-to-cite-this-catalog) +- [Acknowledgements](#acknowledgements) +- [License disclaimer](#license-disclaimer) ## Catalog’s Content @@ -64,7 +60,7 @@ Generated metadata can preserve existing RDF identities, curated fields, and dat ### Catalog Releases -Repository releases use date tags in `YYYYMMDD` form. Each attached `ontouml-models-YYYYMMDD.ttl` asset aggregates eligible model and metadata RDF; it is **not an archive of native projects, JSON, images, or bibliographies**. Use the release's **Source code (zip)** or **Source code (tar.gz)** for the complete tracked snapshot. See [download instructions and a pinned example](documentation/using-models.md#download-a-file-or-a-snapshot), [GitHub Releases](https://github.com/OntoUML/ontouml-models/releases), and the [release operator guide](scripts/generate-release-file.md). +Repository releases use date tags in `YYYYMMDD` form. Each release publishes two byte-identical Turtle assets: `ontouml-models-YYYYMMDD.ttl` for version-specific access and `ontouml-models-latest.ttl` as a moving convenience alias for the most recent release. These assets aggregate eligible model and metadata RDF; they are **not archives of native projects, JSON, images, or bibliographies**. Use the release's **Source code (zip)** or **Source code (tar.gz)** for the complete tracked snapshot. See [download instructions and a pinned example](documentation/using-models.md#download-a-file-or-a-snapshot), [GitHub Releases](https://github.com/OntoUML/ontouml-models/releases), and the [release operator guide](scripts/generate-release-file.md). ### Data Schemas @@ -118,7 +114,7 @@ The OntoUML/UFO Catalog Metadata Vocabulary's elements are identified below by t ### FAIR Data Point: The Data Discovery Service -The [OntoUML FAIR Data Point](https://w3id.org/ontouml-models) is the catalog's separately operated discovery service, based on the [FAIR Data Point approach](https://doi.org/10.1162/dint_a_00160) to exposing rich metadata. +The [OntoUML FAIR Data Point](https://w3id.org/ontouml-models/fdp/) is the catalog's separately operated discovery service, based on the [FAIR Data Point approach](https://doi.org/10.1162/dint_a_00160) to exposing rich metadata. > [!IMPORTANT] > The FDP has not been updated since its initial release and does not represent the current catalog state. No FDP update or synchronization work is currently planned. The GitHub repository remains actively maintained and is the authoritative source for current files, metadata, history, contributions, and releases. See the [responsibility boundary](documentation/technical-overview.md#github-storage-and-fdp-discovery). @@ -129,11 +125,16 @@ Persistent entry points are listed below. A stable URL is not necessarily an imm | Resource | Persistent entry point | | --- | --- | -| FDP catalog page (currently outdated) | [Catalog discovery](https://w3id.org/ontouml-models) | +| Catalog landing page | [Catalog repository](https://w3id.org/ontouml-models) — redirects to the current GitHub repository | +| FDP catalog page (currently outdated) | [Catalog discovery](https://w3id.org/ontouml-models/fdp/) | | GitHub repository | [Repository](https://w3id.org/ontouml-models/git) | +| Canonical model page | `https://w3id.org/ontouml-models/models/` — GitHub page for `models//` | +| File within a model | `https://w3id.org/ontouml-models/models//` — raw GitHub file below `models//` | | OntoUML vocabulary | [OntoUML](https://w3id.org/ontouml) | -| Latest catalog release | [Latest release](https://w3id.org/ontouml-models/release) | -| Specific catalog release | `https://w3id.org/ontouml-models/release/` — substitute a date tag; for example, [20230602](https://w3id.org/ontouml-models/release/20230602) | +| Latest catalog release page | [Latest release](https://w3id.org/ontouml-models/release) | +| Latest catalog release Turtle | [Latest release Turtle](https://w3id.org/ontouml-models/release/latest.ttl) — moving alias for the latest published release asset | +| Specific catalog release page | `https://w3id.org/ontouml-models/release/` — substitute a date tag; for example, [20230602](https://w3id.org/ontouml-models/release/20230602) | +| Specific catalog release Turtle | `https://w3id.org/ontouml-models/release/.ttl` — direct Turtle asset for the selected date-tagged release | | Catalog Vocabulary Turtle | [Catalog metadata vocabulary](https://w3id.org/ontouml-models/vocabulary) | ## How to Contribute diff --git a/documentation/README.md b/documentation/README.md index c50cad0cc..95425aad5 100644 --- a/documentation/README.md +++ b/documentation/README.md @@ -12,7 +12,7 @@ The [OntoUML/UFO Catalog](../README.md) stores conceptual models and their repre | Find the preferred catalog citation | [How to Cite this Catalog](../README.md#how-to-cite-this-catalog) and [CITATION.cff](../CITATION.cff) | > [!IMPORTANT] -> **Use GitHub for current catalog content.** This repository is actively maintained and updated. The separate [FAIR Data Point](https://w3id.org/ontouml-models) has not been updated since its initial release, is currently outdated, and has no planned update or synchronization work at this time. See the [responsibility boundary](technical-overview.md#github-storage-and-fdp-discovery). +> **Use GitHub for current catalog content.** This repository is actively maintained and updated. The separate [FAIR Data Point](https://w3id.org/ontouml-models/fdp/) has not been updated since its initial release, is currently outdated, and has no planned update or synchronization work at this time. See the [responsibility boundary](technical-overview.md#github-storage-and-fdp-discovery). ## Supporting assets diff --git a/documentation/metadata-schema.png b/documentation/metadata-schema.png index 8392198c0..a743c5d06 100644 Binary files a/documentation/metadata-schema.png and b/documentation/metadata-schema.png differ diff --git a/documentation/metadata-schema.vpp b/documentation/metadata-schema.vpp index 4f5fb69e6..eb5fc3106 100644 Binary files a/documentation/metadata-schema.vpp and b/documentation/metadata-schema.vpp differ diff --git a/documentation/technical-overview.md b/documentation/technical-overview.md index ef3302f0f..c7530d1cb 100644 --- a/documentation/technical-overview.md +++ b/documentation/technical-overview.md @@ -109,4 +109,4 @@ In text: a catalog links to semantic artefacts; a semantic artefact links to its GitHub stores and distributes the files, records their history, accepts contributions, and runs the documented repository automation. > [!IMPORTANT] -> GitHub is the actively maintained and regularly updated source for the current catalog. The separately operated [FAIR Data Point](https://w3id.org/ontouml-models) has not been updated since its initial release, is currently outdated, and has no planned update or synchronization work at this time. Repository-side `catalog.ttl` synchronization does not update the FDP. Its endpoints, search, deployment, and operational behavior remain outside this guide; useful [FDP references](../README.md#fair-data-point-the-data-discovery-service) are retained for context. +> GitHub is the actively maintained and regularly updated source for the current catalog. The separately operated [FAIR Data Point](https://w3id.org/ontouml-models/fdp/) has not been updated since its initial release, is currently outdated, and has no planned update or synchronization work at this time. Repository-side `catalog.ttl` synchronization does not update the FDP. Its endpoints, search, deployment, and operational behavior remain outside this guide; useful [FDP references](../README.md#fair-data-point-the-data-discovery-service) are retained for context.