A library with utils for performing Skolemization on blank nodes (RDF)
Project description
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
- pyenv (recommended)
- pipx (recommended)
- poetry
- nox
- nox-poetry
% 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skolemizer-2.0.1.tar.gz.
File metadata
- Download URL: skolemizer-2.0.1.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.10.19 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da7f4fd8f63f14eba0a951b003cd03a5f30d1121bf80cf8d234352584a57cc0b
|
|
| MD5 |
07fb6cc7fbc621bcb138df4fed20b2fd
|
|
| BLAKE2b-256 |
ccf5afd051db34b4841896f0a64c6b4ba1469e2a70878e45a79f5129cb9bb01f
|
File details
Details for the file skolemizer-2.0.1-py3-none-any.whl.
File metadata
- Download URL: skolemizer-2.0.1-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.10.19 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfa7e373aebb334748a3a84fd7cc82e6dff0bcfafd3b3a3819f54ba72c47780a
|
|
| MD5 |
9dbbec380b4d0fd46350dd1c785c2418
|
|
| BLAKE2b-256 |
53107933348af035f89f5535c69439854230d0f16cf51015f30e9cacd30875ff
|