Skip to main content

A library with utils for performing Skolemization on blank nodes (RDF)

Project description

Tests codecov PyPI Read the Docs

skolemizer

A library with utils for performing Skolemization on blank nodes (RDF)

W3C has a short intro to skolemization here: https://www.w3.org/2011/rdf-wg/wiki/Skolemisation

Development

Requirements

% pipx install poetry==1.1.6
% pipx install nox==2020.12.31
% pipx inject nox nox-poetry

Install

% git clone https://github.com/Informasjonsforvaltning/skolemizer.git
% cd skolemizer
% pyenv install 3.9.4
% pyenv local 3.9.4
% poetry install

Getting started

Remember before starting to always set the baseurl for skolemization, according to your organization url. This can be done by setting the environment variable skolemizer_baseurl on your operating system. It can also e.g. be done run time through Python's os package:

os.environ[Skolemizer.baseurl_key] = "https://www.someorganiztion.somedomain/"

If not set Skolemizer will use "http://example.com/" as base url. In order to invoke the skolemizer for ensuring identifier of rdf-nodes simply add

from skolemizer import Skolemizer

and then before rdf-serialization of a class:

        if not getattr(self, "identifier", None):
            self.identifier = Skolemizer.add_skolemization()

There should also be a skolemization check performed when serializing object properties. When creating unit tests of skolemized rdf nodes an uuid will be applied as a substring of the complete skolemization. Therefore, in order to create stable unit tests one can use the tests utils in order to mock a stable skolemization.

E.g. pytest-mocks MockFixture permits mocking of the skolemizer:

    from pytest_mock import MockFixture
    from skolemizer.testutils import skolemization

    catalog = Catalog()

    mocker.patch(
        "skolemizer.Skolemizer.add_skolemization",
        return_value=skolemization
    )

which outputs e.g:

        @prefix dct: <http://purl.org/dc/terms/> .
        @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
        @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
        @prefix dcat: <http://www.w3.org/ns/dcat#> .

        <http://wwww.digdir.no/.well-known/skolem/284db4d2-80c2-11eb-82c3-83e80baa2f94>
         a dcat:Catalog  .

Run all sessions

% nox

Run all tests with coverage reporting

% nox -rs tests

Debugging

You can enter into Pdb by passing --pdb to pytest:

nox -rs tests -- --pdb

You can set breakpoints directly in code by using the function breakpoint().

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skolemizer-2.1.1.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skolemizer-2.1.1-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file skolemizer-2.1.1.tar.gz.

File metadata

  • Download URL: skolemizer-2.1.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.12.13 Linux/6.17.0-1013-azure

File hashes

Hashes for skolemizer-2.1.1.tar.gz
Algorithm Hash digest
SHA256 ca6df29fadc01bd739725c17ae0fcfe76622a8f369a991adfb3ef943a7b5358d
MD5 357fca065361cbec19f32d6901c59996
BLAKE2b-256 1f50f4856c3cc5c95936964c03a3b42a5a5a529cc62f4a97db4f1002edad4d07

See more details on using hashes here.

File details

Details for the file skolemizer-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: skolemizer-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.12.13 Linux/6.17.0-1013-azure

File hashes

Hashes for skolemizer-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8b5a718b8b267c68365a2967abdda136f35650f444168418fd18b3f6d41a2a87
MD5 d7dd6494e12e9a7af017d80b3b9ccb37
BLAKE2b-256 9f417c036829fec1340cbddf4b684e5dcd5e96b362a65939d2126a88118d1391

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page