Read-only mirror of https://github.com/blw-ofag-ufag/eCH-0265 — Bundesamt für Landwirtschaft. Issues & pull requests at the source.
  • Turtle 85.3%
  • Python 6.6%
  • RMarkdown 4.2%
  • Makefile 1.7%
  • Markdown 1.2%
  • Other 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-19 11:29:14 +02:00
.github/workflows Merge two separate github action runners 2026-08-12 13:56:14 +02:00
docs improve wording regarding direct payment crops 2026-08-14 16:26:32 +02:00
src Update mapping table generation query 2026-08-18 12:56:33 +02:00
tests introduce pytest skips for lindas issues 2026-08-17 11:22:44 +02:00
.gitattributes Set up structure according to template 2026-07-17 19:36:52 +02:00
.gitignore Set up structure according to template 2026-07-17 19:36:52 +02:00
CONTRIBUTING.md Set up structure according to template 2026-07-17 19:36:52 +02:00
LICENSE.md Update license header format 2026-08-12 11:35:42 +02:00
Makefile Automatically render UML diagram for standard from SHACL data model 2026-07-29 17:26:39 +02:00
README.md Merge two separate github action runners 2026-08-12 13:56:14 +02:00

eCH-0265 Agricultural Crops (Working Draft v2.0)

CI/CD GitHub last commit GitHub issues

This resource contains a data model for agricultural crops in Switzerland as well as associated reference objects, which can be retrieved in a machine-readable format as Linked Data. This aims to enable the domain-validated exchange and reuse of data between the fields of direct payments, nutrient balancing, and plant protection.

This repository includes a full semantic web pipeline, including

  1. manual data curation (data files in src/rdf/data),
  2. data integration from a relational database (using python, specifically src/python/pipeline/...),
  3. OWL-based inferencing (using the ontology in src/rdf/model.owl.ttl),
  4. SPARQL-based processing of the graph (using rules in src/sparql/processing/...)
  5. SHACL-based graph data validation (using src/rdf/shapes/model.shacl.ttl)
  6. a even more customizable Pytest test suite,
  7. uploading of the final graph to LINDAS
  8. a documentation building pipeline using Quarto

Development Tools

This repository uses a variety of tools to ensure robust data integration, reasoning, validation, and documentation.

  • HermiT: An OWL reasoner used for logical reasoning and inferring new knowledge from the ontology and data.
  • Pytest: A testing framework used to run syntax checks and evaluate SHACL validation reports.
  • PySHACL: A Python engine used to validate the generated RDF graphs against SHACL shape definitions.
  • ROBOT: CLI tool used to merge, reason, and process RDF graphs.
  • RDFLib: A Python library used to parse, serialize, and programmatically manipulate RDF data.
  • Quarto: An open-source publishing system used for rendering the documentation.

Semantic Web Standards

The project relies on core W3C Semantic Web standards to model, link, and validate data effectively.

  • RDF (Resource Description Framework): The foundational data model used to represent information as a directed graph of triples.
  • OWL (Web Ontology Language): Used to define the formal semantics, classes, and properties of the ontology.
  • SHACL (Shapes Constraint Language): Used to declare structural constraints and validate the integrity of the RDF data.
  • SPARQL: The standard query language used to extract, transform, and post-process the RDF graphs.
  • Turtle: The primary, human-readable serialization format used for all RDF files in this repository.

Build and Deployment Orchestration

To streamline the workflow, this project uses make as its primary orchestration tool, automating everything from setup to deployment. The Makefile defines a single entry point to sequentially execute data integration, logical reasoning, SPARQL updates, SHACL validation, testing, and documentation rendering.

  1. Add variables to .env (for local execution)

    USER=********
    PASSWORD=********
    GRAPH=********
    ENDPOINT=********
    
  2. Set up dependencies

    make setup
    
  3. Run the build process

    make
    

    Make sure you pass all tests with pytest.

  4. Upload the final data to LINDAS, the linked data service by the federal archives:

    Automatic Deployment

    The deployment is automatically triggered via GitHub Actions whenever changes are pushed or merged to the main branch. To enable this, configure the environment variables listed in step 1 as repository secrets in your GitHub project settings (Settings > Secrets and variables > Actions > New repository secret):

    Manual Deployment

    You can still upload the final data manually by running:

    make publish
    

    By default, the publication process starts by deleting any pre-existing data in the provided named graph on LINDAS. You can also just delete any published data by running:

    make delete
    
  5. If you want to clean all written files:

    make clean