Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
e3e9474
ODK seed generated files for log using seed-template.yaml
ThHanke Aug 28, 2025
10c9568
Merge pull request #2 from materialdigital/fresh-seed-20250828-140340
ThHanke Aug 28, 2025
9e500ae
updated ontology
github-actions[bot] Aug 28, 2025
7a4c272
added creater
ThHanke Aug 28, 2025
fa9f634
changed iri of all entities
ThHanke Aug 29, 2025
4e0f9e4
fixe some mistakes of doubled iri
ThHanke Aug 29, 2025
f2c747a
another fix, created by doubled iris
ThHanke Aug 29, 2025
581cfee
another fix
ThHanke Aug 29, 2025
d356eb6
updated ontology
github-actions[bot] Aug 29, 2025
d7139eb
fixed id ranges and iris
ThHanke Aug 29, 2025
8075439
another small fix
ThHanke Aug 29, 2025
cf6b979
updated readme
ThHanke Aug 29, 2025
76cab3f
updated ontology
github-actions[bot] Aug 29, 2025
acded71
fixed base url
ThHanke Aug 29, 2025
69fbd3d
updated ontology
github-actions[bot] Aug 29, 2025
85b9fab
Update docs.yml
ThHanke Aug 29, 2025
134becf
Merge branch 'main' into main
ThHanke Aug 29, 2025
9bde329
Merge pull request #3 from materialdigital/main
ThHanke Aug 29, 2025
ed23973
updated ontology
github-actions[bot] Aug 29, 2025
e8f5dce
Update docs.yml
ThHanke Aug 29, 2025
f3b4b10
updated ontology
github-actions[bot] Aug 29, 2025
de06cf4
deleted LOG_1001247
ThHanke Sep 1, 2025
1ae799a
Merge branch 'main' of github.com:materialdigital/logistics-applicati…
ThHanke Sep 1, 2025
8a0c24b
updated ontology
github-actions[bot] Sep 1, 2025
a7474c9
changed ontology iri
ThHanke Sep 1, 2025
e1a8cc7
updated ontology
github-actions[bot] Sep 1, 2025
3062ee9
fixed some issues from doubled iri assignments
ThHanke Sep 1, 2025
b87ad40
updated ontology
github-actions[bot] Sep 1, 2025
b0c7d63
some additional fixes
ThHanke Sep 1, 2025
bad942f
updated ontology
github-actions[bot] Sep 1, 2025
b4c6784
Create update_repo.yml
ThHanke Sep 1, 2025
8de4e8f
updated ontology
github-actions[bot] Sep 1, 2025
74d3289
Update update_repo.yml
ThHanke Sep 1, 2025
1e138e0
updated ontology
github-actions[bot] Sep 1, 2025
d8b9e42
updated ontology
github-actions[bot] Sep 1, 2025
c80c54f
Update log-odk.yaml
ThHanke Sep 1, 2025
1cf0998
updated ontology
github-actions[bot] Sep 1, 2025
202927c
updated ontology
github-actions[bot] Sep 1, 2025
61a3b12
updated ontology
github-actions[bot] Sep 1, 2025
0ae4047
Update docs.yml
ThHanke Sep 1, 2025
bcfd66d
updated ontology
github-actions[bot] Sep 1, 2025
d0e9830
Update log-odk.yaml
ThHanke Sep 5, 2025
bc59910
updated ontology
github-actions[bot] Sep 5, 2025
9da2306
removed ao from uri path
ThHanke Nov 11, 2025
ffec42d
updated ontology
github-actions[bot] Nov 11, 2025
1e1a151
remaining replacements
ThHanke Nov 11, 2025
8e53ceb
updated ontology
github-actions[bot] Nov 11, 2025
3fc66d1
forgot some ao s
ThHanke Nov 11, 2025
d32e2c3
updated ontology
github-actions[bot] Nov 11, 2025
32d56e6
Update log-idranges.owl
ThHanke Nov 13, 2025
5a248ed
updated ontology
github-actions[bot] Nov 13, 2025
67a78ba
BFO -> RO, none temporalized, some identifiers
ThHanke Nov 17, 2025
64572a9
updated ontology
github-actions[bot] Nov 17, 2025
8a6f0ca
updated ontology
github-actions[bot] Nov 20, 2025
5990185
delete tmp and report file
joergwa Nov 20, 2025
870d142
delete old seed file
joergwa Nov 20, 2025
9b78bb2
updated ontology
github-actions[bot] Nov 20, 2025
34264d0
setup release scripts
joergwa Nov 20, 2025
c8f72a4
make clean
joergwa Nov 20, 2025
426ddeb
update repo & refresh imports
joergwa Nov 20, 2025
2be0fe1
add release artefcts
joergwa Nov 20, 2025
ce9c358
Merge branch 'repo-cleanup' of https://github.com/materialdigital/log…
joergwa Nov 20, 2025
3c89719
updated ontology
github-actions[bot] Nov 20, 2025
d6ae5ff
Merge pull request #4 from materialdigital/repo-cleanup
ThHanke Nov 20, 2025
69e9474
updated ontology
github-actions[bot] Nov 20, 2025
c4f1e43
sync with upstream application-ontology-template
Apr 16, 2026
7ff6ca5
ODK: Update repository configuration (make update_repo)
github-actions[bot] Apr 16, 2026
0fb4245
some axiom fixes, used realizes wrongly
Apr 16, 2026
4b66b13
upgrade pmdco mirror to 3.0.0, replace PMD_0000014 with OBI_0000260
Apr 17, 2026
110a012
add W3C ORG and FOAF imports for person/organization modeling
Apr 17, 2026
607a1f5
replace PMD_0000881 (person) with foaf:Person
Apr 17, 2026
4737438
align org/role hierarchy with W3C ORG vocab and IOF
Apr 17, 2026
569caef
expand org import: Site, ChangeEvent, OrganizationalCollaboration + t…
Apr 17, 2026
0e0d3c3
align facility with org:Site and bridge org:Site to geospatial site h…
Apr 17, 2026
87d02cb
fix: remove org:Site subClassOf geospatial site — BFO disjointness vi…
Apr 17, 2026
0291a51
add LOG_1000146 physical premises as BFO-aligned org:Site equivalent
Apr 17, 2026
3a2cb34
add autoshape pipeline: owl2shacl rulesets, generation script, make t…
Apr 17, 2026
db08792
fix: quote docker volume path in generate-auto-shapes.sh
Apr 17, 2026
00c6aa5
fix pattern filenames: shape-data.ttl + pyshacl based test.sh matchin…
Apr 17, 2026
78f71bd
add four usage patterns: shipment-by-sea, contract-negotiation, wareh…
Apr 17, 2026
ba28177
fix: all four patterns now pass pyshacl validation
Apr 17, 2026
0c3f468
ODK: Update repository configuration (make update_repo)
github-actions[bot] Apr 17, 2026
62cbb0a
add visgraph visualization links to all pattern docs
Apr 17, 2026
578250e
enrich pattern examples with real-world geospatial coordinates, addre…
Apr 17, 2026
0fc7975
update README with full documentation, imports, key classes, patterns…
Apr 17, 2026
5796458
prepare Zenodo v1.0.0 release
Apr 17, 2026
8375b3f
fix: refresh imports in release workflow, add Zenodo badge
Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,19 +132,18 @@ jobs:
# expanding $(ONTBASE) and $(VERSION) — make expands them itself using
# values already defined in the ODK-generated Makefile.
#
# IMP=false / PAT=false skips import refresh for speed — imports were
# already refreshed by the last regular build. Remove IMP=false to
# force a full import refresh as part of the release.
# refresh-imports is run before all_assets (same as qc.yml ontology-build)
# to ensure SLME modules are extracted from current mirrors.
# ──────────────────────────────────────────────────────────────────────
- name: Build release artifacts
env:
ROBOT_ENV: ROBOT_JAVA_ARGS=-Xmx6G
run: |
cd src/ontology
make IMP=false PAT=false \
make PAT=false \
VERSION=${{ steps.version.outputs.version }} \
'ANNOTATE_ONTOLOGY_VERSION=annotate -V $(ONTBASE)/$(VERSION) --annotation owl:versionInfo $(VERSION)' \
all_assets
refresh-imports all_assets

# ── Commit release artifacts to main ─────────────────────────────────
# Versioned artifacts must be in main so that docs.yml can find them
Expand Down
144 changes: 144 additions & 0 deletions .github/workflows/seed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# SEEDING ODK workflow

name: seed odk

# Controls when the action will run.
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
ontology_id:
description: 'Ontology ID (replaces id in seed.yaml)'
required: true
uribase_suffix:
description: 'URI base suffix (replaces uribase_suffix in seed.yaml)'
required: true
odk_tag:
description: 'ODK Docker tag to use'
required: false
default: 'latest'
config_file:
description: 'Configuration file name'
required: false
default: 'seed-template.yaml'

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "seed_ontology"
seed_ontology:
# The type of runner that the job will run on
runs-on: ubuntu-latest
container: obolibrary/odkfull:${{ github.event.inputs.odk_tag || 'latest' }}

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4

- name: Set up Git config
run: |
git config --global user.name "${{ github.actor }}"
git config --global user.email "${{ github.actor }}@users.noreply.github.com"

- name: Generate unique branch name
run: |
BRANCH_NAME="fresh-seed-$(date +%Y%m%d-%H%M%S)"
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV

- name: Extract GitHub org and repo
run: |
GITHUB_ORG=$(echo "${{ github.repository }}" | cut -d'/' -f1)
GITHUB_REPO=$(echo "${{ github.repository }}" | cut -d'/' -f2)
echo "GITHUB_ORG=$GITHUB_ORG" >> $GITHUB_ENV
echo "GITHUB_REPO=$GITHUB_REPO" >> $GITHUB_ENV
echo "GitHub Organization: $GITHUB_ORG"
echo "GitHub Repository: $GITHUB_REPO"

- name: Verify seed config file exists
run: |
if [ ! -f "${{ github.event.inputs.config_file || 'seed-template.yaml' }}" ]; then
echo "Error: Configuration file ${{ github.event.inputs.config_file || 'seed-template.yaml' }} not found!"
exit 1
fi
echo "Using configuration file: ${{ github.event.inputs.config_file || 'seed-template.yaml' }}"

- name: Update seed-template.yaml with input values
run: |
CONFIG_FILE="${{ github.event.inputs.config_file || 'seed-template.yaml' }}"

echo "Original seed-template.yaml content:"
cat "$CONFIG_FILE"

# Replace id value
sed -i "s/^id:.*/id: ${{ github.event.inputs.ontology_id }}/" "$CONFIG_FILE"

# Replace uribase_suffix value
sed -i "s/^uribase_suffix:.*/uribase_suffix: ${{ github.event.inputs.uribase_suffix }}/" "$CONFIG_FILE"

# Replace uribase value
sed -i "s/^uribase_suffix:.*/uribase_suffix: https://w3id.org/pmd/${{ github.event.inputs.uribase_suffix }}/" "$CONFIG_FILE"

# Replace github_org value
sed -i "s/^github_org:.*/github_org: $GITHUB_ORG/" "$CONFIG_FILE"

# Replace repo value
sed -i "s/^repo:.*/repo: $GITHUB_REPO/" "$CONFIG_FILE"

echo "Updated seed-template.yaml content:"
cat "$CONFIG_FILE"

- name: Run ODK seed
env:
ODK_IMAGE: odkfull
ODK_TAG: ${{ github.event.inputs.odk_tag || 'latest' }}
ODK_GITNAME: ${{ github.actor }}
ODK_GITEMAIL: ${{ github.actor }}@users.noreply.github.com
run: |
echo "This script only works with ODK 1.3.2 and later. For ODK 1.3.1 or earlier, use https://raw.githubusercontent.com/INCATools/ontology-development-kit/v1.3.1/seed-via-docker.sh"
/tools/odk.py seed \
--gitname "$ODK_GITNAME" \
--gitemail "$ODK_GITEMAIL" \
-c \
-C ${{ github.event.inputs.config_file || 'seed-template.yaml' }}

- name: Copy generated files to root
run: |
TARGET_DIR="target/${{ github.event.inputs.ontology_id }}"
if [ ! -d "$TARGET_DIR" ]; then
echo "Error: Target directory $TARGET_DIR not found!"
exit 1
fi

echo "Copying files from $TARGET_DIR to root, excluding .git and .github directories..."

# Copy all files and directories except .git and .github
find "$TARGET_DIR" -mindepth 1 -maxdepth 1 ! -name '.git' ! -name '.github' -exec cp -r {} . \;

# List what was copied
echo "Files copied to root:"
ls -la

- name: Clean up target directory
run: |
echo "Removing target directory to avoid git conflicts..."
rm -rf target/
git status

- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
branch: ${{ env.BRANCH_NAME }}
base: main
title: "ODK Seed: ${{ github.event.inputs.ontology_id }}"
commit-message: "ODK seed generated files for ${{ github.event.inputs.ontology_id }} using ${{ github.event.inputs.config_file || 'seed.yaml' }}"
body: |
## ODK Seed Generated Files

- **Ontology ID**: `${{ github.event.inputs.ontology_id }}`
- **URI Base Suffix**: `${{ github.event.inputs.uribase_suffix }}`
- **GitHub Organization**: `${{ env.GITHUB_ORG }}`
- **Repository**: `${{ env.GITHUB_REPO }}`
- **Config File**: `${{ github.event.inputs.config_file || 'seed-template.yaml' }}`
- **ODK Tag**: `${{ github.event.inputs.odk_tag || 'latest' }}`

This PR contains the generated ontology files from ODK seed.
34 changes: 34 additions & 0 deletions .github/workflows/update_repo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Basic ODK workflow

name: update_repo

# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the main branch
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "ontology_qc"
odk_update_repo:
# The type of runner that the job will run on
runs-on: ubuntu-latest
container: obolibrary/odkfull:v1.6

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4

- name: Build ontology
env:
DEFAULT_BRANCH: main
run: cd src/ontology && make update_repo ROBOT_ENV='ROBOT_JAVA_ARGS=-Xmx6G'
- name: Commit files # commit the src folder
uses: EndBug/add-and-commit@v9
with:
message: "updated ontology"
add: "*.* --force"
cwd: "./src/"
default_author: github_actions
63 changes: 61 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,71 @@
.DS_Store
semantic.cache
bin/
.trunk/

*.tmp
*.tmp.obo
*.tmp.owl
*.tmp.json
*-relation-graph.tsv.gz
.template.db

.github/token.txt
.github/token.txt

/log.owl
/log.obo
/log.json
/log.db
/log-base.*
/log-basic.*
/log-full.*
/log-simple.*
/log-simple-non-classified.*
/mappings/
/patterns/
/reports/
/subsets/

src/ontology/mirror
src/ontology/mirror/*
src/ontology/reports/*
!src/ontology/reports/release-diff.md
src/ontology/log.owl
src/ontology/log.obo
src/ontology/log.json
src/ontology/log.db
src/ontology/log-base.*
src/ontology/log-basic.*
src/ontology/log-full.*
src/ontology/log-simple.*
src/ontology/log-simple-non-classified.*

src/ontology/seed.txt
src/ontology/dosdp-tools.log
src/ontology/ed_definitions_merged.owl
src/ontology/ontologyterms.txt
src/ontology/simple_seed.txt
src/ontology/patterns
src/ontology/merged-log-edit.owl
src/ontology/log-edit.properties

src/ontology/target/
src/ontology/tmp/*
!src/ontology/tmp/.gitkeep
!src/ontology/tmp/README.md

src/ontology/run.sh.conf
src/ontology/run.sh.env

src/ontology/imports/*_terms_combined.txt

src/patterns/data/**/*.ofn
src/patterns/data/**/*.txt
src/patterns/pattern_owl_seed.txt
src/patterns/all_pattern_terms.txt


# patterns: track hand-written files, ignore generated autoshapes
!/patterns/
/patterns/autoshape/auto-shapes-*.ttl

# End of ODK-managed rules
43 changes: 43 additions & 0 deletions ACKNOWLEDGEMENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Acknowledgements

## IOF Supply Chain Module

The majority of classes and properties in LOG are adopted from the
[IOF Supply Chain Module](https://spec.industrialontologies.org/ontology/supplychain/Metadatasupplychain/supplychainModule),
developed by the [Industrial Ontologies Foundry (IOF)](https://www.industrialontologies.org/).
Term provenance is recorded per-entity via `IAO:0000412` ("imported from") annotations.
The IOF Supply Chain Module is licensed under the MIT License.

## PMD Core Ontology (PMDCo)

LOG extends the [PMD Core Ontology (PMDCo) 3.0.0](https://w3id.org/pmd/co),
developed by the [Platform MaterialDigital (PMD)](https://www.materialdigital.de/).
PMDCo is licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).

## W3C Organization Ontology

Organization, membership, post, and site modeling uses the
[W3C Organization Ontology](https://www.w3.org/TR/vocab-org/) (W3C, CC BY 4.0).

## FOAF Vocabulary

Person modeling uses the [FOAF Vocabulary](http://xmlns.com/foaf/0.1/).

## Basic Formal Ontology (BFO)

All classes are aligned to [BFO 2020](https://basic-formal-ontology.org/),
the top-level ontology underpinning both IOF and PMDCo.

## Funding

This work was carried out at the [Fraunhofer Institute for Mechanics of Materials IWM](https://www.iwm.fraunhofer.de/)
and is funded by the [German Federal Ministry for Research, Technology and Space (BMFTR)](https://www.bmftr.bund.de)
under the [Plattform MaterialDigital (PMD)](https://www.materialdigital.de/) framework.

Development was supported by the PMD-X project
[EDCar](https://www.iwm.fraunhofer.de/de/forschungsprojekte-des-fraunhofer-iwm/EDCar.html)
(Förderkennzeichen: 13XPM504B) —
*Automotive End-of-Life Datenaustausch für Circular Economy*
(07/2025–06/2026), coordinated by Fraunhofer IWM in collaboration with
Fraunhofer IPK, BASF SE, BMW Group, Robert Bosch GmbH, Schaeffler Technologies,
LRP-Autorecycling Leipzig GmbH, tec4U Solutions GmbH, and light ds GmbH.
59 changes: 59 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Changelog

All notable changes to this project will be documented in this file.
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [1.0.0] - 2026-04-17

### First release

The PMD Logistics Application Ontology (LOG) is a BFO- and IOF-conformant ontology
for logistics and supply chain management in the materials science and engineering domain.

#### Origin

LOG originates from a need to model logistics and supply chain processes within the
[Platform MaterialDigital (PMD)](https://www.materialdigital.de/) ecosystem in a way
that is interoperable with existing PMD ontologies and compatible with industrial standards.
The ontology was developed at Fraunhofer IWM and adopts the
[IOF Supply Chain Module](https://spec.industrialontologies.org/ontology/supplychain/Metadatasupplychain/supplychainModule)
as its primary source, extending and aligning it to the
[PMD Core Ontology (PMDCo)](https://w3id.org/pmd/co) 3.0.0.
Development was supported by the PMD-X project EDCar (Förderkennzeichen: 13XPM504B).

#### What it covers

- **Organizations and roles** — business organizations, suppliers, manufacturers, carriers,
freight forwarders and their BFO-aligned roles; integrated with W3C ORG vocabulary
- **Persons** — modeled via FOAF, linked to organizations through `org:Membership` and `org:Post`
- **Locations and premises** — physical premises, geospatial sites with WGS84 coordinates,
ship-from/ship-to locations, supply chain nodes
- **Shipments and cargo** — shipment, load, cargo, lot, traceable resource unit,
bill of lading, purchase order
- **Transport** — transport process, seaway, airway, shipping route, multimodal chains
- **Facilities** — facility, storage facility, distribution center, warehouse
- **Agreements** — commercial service agreement, bill of lading, framework contracts
- **Processes** — transport, receiving, warehousing, packaging, procurement, selling,
manufacturing, supply chain processes
- **Plan specifications** — shipment plan, warehousing plan, supply chain plan

#### Usage patterns (SHACL-validated)

Four real-world usage patterns with annotated example data are included,
each validated with [pyshacl](https://github.com/RDFLib/pySHACL):

| Pattern | Scenario |
|---------|----------|
| [Shipment by Sea](patterns/shipment-by-sea/) | Steel coil shipment Baosteel → Volkswagen via COSCO |
| [Contract Negotiation](patterns/contract-negotiation/) | Annual steel supply framework agreement |
| [Warehouse Receiving](patterns/warehouse-receiving/) | Steel coils received at DB Schenker Hamburg |
| [Multimodal Transport](patterns/multimodal-transport/) | Multi-leg transport chain |

#### Ontology artifacts

| File | Description |
|------|-------------|
| `log.owl` / `log.ttl` | Full ontology with all imports merged |
| `log-base.owl` / `log-base.ttl` | Base ontology without imports |
| `log-simple.owl` / `log-simple.ttl` | Simplified profile |
| `log-full.owl` / `log-full.ttl` | Full reasoned version |
Loading
Loading