- Turtle 85.3%
- Python 6.6%
- RMarkdown 4.2%
- Makefile 1.7%
- Markdown 1.2%
- Other 1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .github/workflows | ||
| docs | ||
| src | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| CONTRIBUTING.md | ||
| LICENSE.md | ||
| Makefile | ||
| README.md | ||
eCH-0265 Agricultural Crops (Working Draft v2.0)
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
- manual data curation (data files in
src/rdf/data), - data integration from a relational database (using python, specifically
src/python/pipeline/...), - OWL-based inferencing (using the ontology in
src/rdf/model.owl.ttl), - SPARQL-based processing of the graph (using rules in
src/sparql/processing/...) - SHACL-based graph data validation (using
src/rdf/shapes/model.shacl.ttl) - a even more customizable Pytest test suite,
- uploading of the final graph to LINDAS
- 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.
-
Add variables to
.env(for local execution)USER=******** PASSWORD=******** GRAPH=******** ENDPOINT=******** -
Set up dependencies
make setup -
Run the build process
makeMake sure you pass all tests with
pytest. -
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
mainbranch. 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 publishBy 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 -
If you want to clean all written files:
make clean