olivaw

Python framework for Agile ontology development support to be used with command lines with pre-commit or GitHub Actions

https://github.com/wimmics/olivaw

Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.0%) to scientific vocabulary

Keywords

linked-data ontology owl rdf rdfs schema semantics shacl sparql validation vocabulary
Last synced: 4 months ago · JSON representation ·

Repository

Python framework for Agile ontology development support to be used with command lines with pre-commit or GitHub Actions

Basic Info
  • Host: GitHub
  • Owner: Wimmics
  • License: lgpl-2.1
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 5.07 MB
Statistics
  • Stars: 6
  • Watchers: 3
  • Forks: 1
  • Open Issues: 0
  • Releases: 3
Topics
linked-data ontology owl rdf rdfs schema semantics shacl sparql validation vocabulary
Created almost 2 years ago · Last pushed 6 months ago
Metadata Files
Readme License Code of conduct Citation Authors Codemeta

README.md

OLIVAW DOI OLIVAW HAL Id OLIVAW SWHID Id Project Status: Active – The project has reached a stable, usable state and is being actively developed.License: LGPL2.1Discussions: GitHub

Olivaw

Ontology Long-lived Integration Via ACIMOV Workflow

An Agile methodology for ontology development named ACIMOV has been proposed in 2023.

This methodology is an extension of SAMOD with some improvements, including:

  • the possibility to develop modular ontologies
  • ensuring alignment to selected reference ontologies
  • a wider collaboration between product owners, domain experts and ontology developers

This repository is a python library meant for providing tools in an Acimov ontology development context.

Olivaw proposes:

  • command lines that make an Acimov development easier
  • composite actions that can directly be called in workflows from any Acimov project
  • a pre-commit hook that should prevent the biggest mistakes that could be pushed in an Acimov repository

The test reports are first represented using the EARL vocabulary and then exported in the markdown format.

Examples of reports generated from existing ontology projects can be found in the olivaw reports examples folder.

A template repository also exist in order for an ontology project to begin with the accurate repository architecture, workflows, template special files (primee, code of conduct, contributing, etc) so check the acimov olivaw repository template.

In order to get all the available features in olivaw, check the olivaw functional documentation.

Moreover the project, from the project structure itself to the details about any module, function and constants, is documented, so check the olivaw technical documentation.

Olivaw proposes different test tools all powered by Corese, check Corese website and Corese repository.

Olivaw is affiliated to the Wimmics reasearch team, check the other Wimmics projects.

If a bug is to be found or a feature to be proposed, please use olivaw issue menu.

Getting started

Installation requirements

Olivaw needs python 3.10 or greater and java version 11 or greater.

Using a virtual environment would be a good idea, check anaconda navigator or equivalent such as miniconda or venv.

Installing olivaw in a project

First prepare a python environment version 3.10 or greater (3.11 if pre-commit hook is meant to be used).

Then install the library from pipy:

shell pip install olivaw

It can also be installed using this command:

shell pip install git+https://github.com/Wimmics/olivaw

Intializing a repository

Acimov repository structure

This tool is meant to work on an Acimov structured repository.

The acimov olivaw repository template can be used to create a new project or be used to adapt an existing project to this structure.

This repository contains:

  • the folders:
    • .acimov/
    • resources/
    • primer/
    • src/
    • domains/
    • use-cases/
  • a README.md file at the root folder

Getting a personnal access token with gist scope

This framework proposes automatically updated badges at the top of the README.md on each branch.

To make this work a personnal access token with the gist scope is required.

  • First go to the Github access token generation webpage.
  • Then create a personnal access token with only the gist scope. Copy/paste this token somewhere because it will never be shown again.
  • Then go to {repository_url}/settings/secrets/actions, create a new repository secret named GIST_SECRET and paste the key

Initialize repository parameters

Finally this library needs a parameters.json file in the .acimov/ folder that should contain parameters related to the repository.

Use this command to generate one:

shell olivaw init repo

Just follow the instructions (the personnal access token with gist scope will be asked again).

After the execution of the command file named parameters.json in the .acimov/ folder should have appeared and also badges added to the top of the repository README.md file with an initialized gist on gist website.

These parameters can eventually be customized using the olivaw parameters documentation.

The olivaw commands are now available inside the repository!

Basics about olivaw

There are three usages of olivaw that are complementary:

  • the command line allows the developper to run tests on client side on demand and provides tools for everyday development
  • the actions can regularly make a health check of a branch on server side and manage the project badges
  • the pre-commit hook can test on client side a commit and block it if a blocking error is to be found in the staged files

The command line

Here is only a short overview of the main commands. Check the olivaw command line documentation for more details about the available commands.

Model test

Anywhere in the repository use this command to launch a model test:

shell olivaw test model

Data test

This command is for launching data test

shell olivaw test data

Query test

This command is for launching query test

shell olivaw test query

The Github actions

Here is an overview of the actions available. For more details see the olivaw Github Actions documentation.

Each actions of this chapter involve to create a .yaml file located in {repository_path}/.github/workflows/.

Automatic tests on push

In ./github/worflows/ folder, add a test.yaml file containing this:

```yaml name: test on: push

jobs: test: permissions: contents: write runs-on: ubuntu-latest steps: - uses: Wimmics/olivaw/test-actions@v0.0.8 with: gist-secret: ${{ secrets.GIST_SECRET }} ```

Then, after each push on the repository an actions will be triggered and after some time, in the .acimov/output/ folder should have appeared:

  • RDF files written in the turtle format representing the result of the test, written with the EARL vocabulary
  • markdown files representing in a human readable way the previous turtle files

Badges branch initialization

In ./github/worflows/ folder, add a init-branch.yaml file containing this:

```yaml name: init-branch on: create

jobs: model-test: permissions: contents: write runs-on: ubuntu-latest steps: - uses: Wimmics/olivaw/init-branch@v0.0.8 with: gist-secret: ${{ secrets.GIST_SECRET }} ```

Then on each time a branch is published, the actions should create new gists and update the badges in the README.md without anything left to do for the developper.

The pre-commit hook

Pre-commit is a framework that allows on client side to connect programs to git events such as commit, push, merge, etc.

A pre-commit hook is available in this repository to prevent the developper to push big mistakes on the server.

To use it should need first need to install pre-commit. Create a fresh new python 3.11 environment for the tool to work properly.

Once the new environment set, install pre-commit with this command:

shell pip install pre-commit

Then add a file named .pre-commit-config.yaml at the root of the repository containing this:

yaml default_language_version: python: python3 repos: - repo: https://github.com/Wimmics/olivaw rev: v0.0.8 hooks: - id: olivaw-test

Then use this command at the root of the repository:

shell pre-commit install

Finally add the .pre-commit-config.yaml file to the commit:

turtle git add .pre-commit-config.yaml

Now, each time a commit is made, the staged files will be tested and the commit will be blocked if any blocking error is to be found in any of those files.

The test takes a few seconds and pre-commit needs a moment to prepare the hook on the very first use.

There is also the olivaw pre-commit hook documentation.

Citation

This repository is one result of the hMAS ontology project and therefore a part of HyperAgents ANR/SNF project. Check the contributors file of the project.

Please cite as the GitHub repository metadata proposes and/or check the citation file.

Contributing / report an issue

Don't hesitate to report an issue or make a pull request at will.

Owner

  • Name: Wimmics
  • Login: Wimmics
  • Kind: organization

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: olivaw
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Nicolas
    family-names: Robert
    email: nicolas_robert_31@hotmail.fr
    affiliation: 'WIMMICS team, INRIA'
    orcid: 'https://orcid.org/0009-0009-2595-6168'
  - given-names: Fabien
    family-names: Gandon
    affiliation: 'WIMMICS team, INRIA'
    orcid: 'https://orcid.org/0000-0003-0543-1232'
repository-code: 'https://github.com/Wimmics/olivaw'
url: 'https://pypi.org/project/olivaw/'
abstract: Python framework for supporting agile ontology development
keywords:
  - semantics
  - ontology
  - schema
  - vocabulary
  - linked data
  - validation
  - RDF
  - RDFS
  - OWL
  - SHACL
  - SPARQL
license: LGPL-2.1
version: v0.0.8

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "applicationCategory": "Ontology",
  "author": [
    {
      "@id": "https://orcid.org/0009-0009-2595-6168",
      "@type": "Person",
      "affiliation": [
        {
          "@id": "https://ror.org/02kvxyf05",
          "@type": "Organization",
          "name": "Institut national de recherche en informatique et en automatique"
        },
        {
          "@id": "https://ror.org/019tgvf94",
          "@type": "Organization",
          "name": "Universit Cte d'Azur"
        },
        {
          "@id": "https://ror.org/02feahw73",
          "@type": "Organization",
          "name": "Centre National de la Recherche Scientifique"
        },
        {
          "@id": "https://ror.org/01215r597",
          "@type": "Organization",
          "name": "Laboratoire d'Informatique, Signaux et Systmes de Sophia Antipolis"
        }
      ],
      "email": "nicolas_robert_31@hotmail.fr",
      "familyName": "Robert",
      "givenName": "Nicolas"
    },
    {
      "@id": "https://orcid.org/0000-0003-0543-1232",
      "@type": "Person",
      "affiliation": [
        {
          "@id": "https://ror.org/02kvxyf05",
          "@type": "Organization",
          "name": "Institut national de recherche en informatique et en automatique"
        },
        {
          "@id": "https://ror.org/019tgvf94",
          "@type": "Organization",
          "name": "Universit Cte d'Azur"
        },
        {
          "@id": "https://ror.org/02feahw73",
          "@type": "Organization",
          "name": "Centre National de la Recherche Scientifique"
        },
        {
          "@id": "https://ror.org/01215r597",
          "@type": "Organization",
          "name": "Laboratoire d'Informatique, Signaux et Systmes de Sophia Antipolis"
        }
      ],
      "familyName": "Gandon",
      "givenName": "Fabien"
    },
    {
      "@id": "https://orcid.org/0000-0001-9814-8991",
      "@type": "Person",
      "affiliation": [
        {
          "@id": "https://ror.org/001f39w38",
          "@type": "Organization",
          "name": "Clermont Auvergne INP"
        },
        {
          "@id": "https://ror.org/02feahw73",
          "@type": "Organization",
          "name": "Centre National de la Recherche Scientifique"
        },
        {
          "@id": "https://ror.org/00t3fpp34",
          "@type": "Organization",
          "name": "Laboratoire d'Informatique, de Modlisation et d'Optimisation des Systmes"
        },
        {
          "@id": "https://ror.org/05a1dws80",
          "@type": "Organization",
          "name": "Mines Saint-tienne"
        },
        {
          "@id": "https://ror.org/01a8ajp46",
          "@type": "Organization",
          "name": "Universit Clermont Auvergne"
        }
      ],
      "familyName": "Lefranois",
      "givenName": "Maxime"
    }
  ],
  "contributor": [],
  "codeRepository": "https://github.com/Wimmics/olivaw.git",
  "dateCreated": "2024-01-07",
  "dateModified": "2024-12-06",
  "datePublished": "2024-12-06",
  "description": "Python framework for supporting agile ontology development",
  "downloadUrl": "https://github.com/Wimmics/olivaw/releases/download/v0.0.8/olivaw-0.0.8-py3-none-any.whl",
  "funder": {
    "@id": "https://ror.org/01nzkaw91",
    "@type": "Organization",
    "name": "Research Centre Inria Sophia Antipolis - Mditerrane"
  },
  "keywords": [
    "semantics",
    "ontology",
    "schema",
    "vocabulary",
    "linked data",
    "validation",
    "RDF",
    "RDFS",
    "OWL",
    "SHACL",
    "SPARQL"
  ],
  "license": "https://spdx.org/licenses/LGPL-2.1",
  "name": "olivaw",
  "operatingSystem": [
    "Windows",
    "Linux",
    "MacOS"
  ],
  "programmingLanguage": "Python 3",
  "relatedLink": "https://pypi.org/project/olivaw",
  "runtimePlatform": [
    "Python",
    "JVM"
  ],
  "softwareRequirements": [
    "Python >= 3.10",
    "Java >= 11"
  ],
  "version": "0.0.8",
  "developmentStatus": "active",
  "issueTracker": "https://github.com/Wimmics/olivaw/issues"
}

GitHub Events

Total
  • Release event: 5
  • Watch event: 4
  • Delete event: 31
  • Push event: 44
  • Fork event: 2
  • Create event: 29
Last Year
  • Release event: 5
  • Watch event: 4
  • Delete event: 31
  • Push event: 44
  • Fork event: 2
  • Create event: 29

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 13 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 7
  • Total maintainers: 1
pypi.org: olivaw

Python framework for supporting agile ontology development

  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 13 Last month
Rankings
Dependent packages count: 10.8%
Downloads: 30.7%
Average: 34.1%
Dependent repos count: 60.8%
Maintainers (1)
Last synced: 4 months ago

Dependencies

requirements.txt pypi
  • py4j ==0.10.9.7
  • rdflib ==6.3.2
  • regex ==2023.8.8
  • requests ==2.31.0
setup.py pypi
  • requirements *
init-branch/action.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • schneegans/dynamic-badges-action v1.7.0 composite
test-actions/action.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v3 composite
  • schneegans/dynamic-badges-action v1.7.0 composite