A library for managing DCAT metadata using Apache Atlas
Project description
atlasdcat
A Python library for mapping Apache Atlas Glossary terms to DCAT metadata and vice versa.
Specification the Norwegian Application Profile of the DCAT standard.
Notice This library is part of the DCAT for Apache Atlas lifecycle and not a complete solution. The complete lifecycle contains the following actions:
- Create glossary
- Add dataset descriptions by using atlasdcat mapper (this library)
- Assign dataset description glossary terms to entities (actual datasets)
- Fetch glossary terms as DCAT catalog in RDF format (this library)
Usage
Install
% pip install atlasdcat
Getting started
Setup mapper
# Example...
from atlasdcat import AtlasDcatMapper, AtlasGlossaryClient
from pyapacheatlas.auth import BasicAuthentication
atlas_auth = BasicAuthentication(username="dummy", password="dummy")
atlas_client = AtlasGlossaryClient(
endpoint_url="http://atlas", authentication=atlas_auth
)
mapper = AtlasDcatMapper(
glossary_client=atlas_client,
glossary_id="myglossary",
catalog_uri="https://domain/catalog",
catalog_language="http://publications.europa.eu/resource/authority/language/NOB",
catalog_title="Catalog",
catalog_publisher="https://domain/publisher",
dataset_uri_template="http://domain/datasets/{guid}",
distribution_uri_template="http://domain/distributions/{guid}",
language="nb",
)
Map glossary terms to DCAT Catalog RDF resource
try:
mapper.fetch_glossary()
catalog = mapper.map_glossary_terms_to_dataset_catalog()
print(catalog.to_rdf())
except Exception as e:
print(f"An exception occurred: {e}")
Map DCAT Catalog RDF resource to glossary terms
catalog = Catalog()
catalog.identifier = "http://catalog-uri"
catalog.title = {"nb": "mytitle"}
catalog.publisher = "http://publisher"
catalog.language = ["nb"]
catalog.license = ""
dataset = Dataset()
dataset.title = {"nb": "Dataset"}
dataset.description = {"nb": "Dataset description"}
catalog.datasets = [dataset]
try:
mapper.fetch_glossary()
mapper.map_dataset_catalog_to_glossary_terms(catalog)
mapper.save_glossary_terms()
except Exception as e:
print(f"An exception occurred: {e}")
For an example of usage of this library in a simple server, see example.
Development
Requirements
% pip install poetry==1.1.13
% pip install nox==2022.1.7
% pip inject nox nox-poetry==1.0.0
Install developer tools
% git clone https://github.com/Informasjonsforvaltning/atlasdcat.git
% cd atlasdcat
% pyenv install 3.8.12
% pyenv install 3.9.10
% pyenv install 3.10.
% pyenv local 3.8.12 3.9.10 3.10.
% poetry install
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
File details
Details for the file atlasdcat-1.1.2.tar.gz
.
File metadata
- Download URL: atlasdcat-1.1.2.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.10.6 Linux/5.15.0-1023-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2080591b76da7d047e3d1c848e0352a36c4d3a5a2b41d6f4165c07885fa347bc |
|
MD5 | 3694ae42504b496c7be75d13ae80aaa5 |
|
BLAKE2b-256 | 4241a91b413992148962c675d583df589f90eb42d6527c01535c82e020dfa7bc |
File details
Details for the file atlasdcat-1.1.2-py3-none-any.whl
.
File metadata
- Download URL: atlasdcat-1.1.2-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.10.6 Linux/5.15.0-1023-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2a554f80bab36e12d977d3621193101efae7a446bbe08fb218bfaf5f97d84d0 |
|
MD5 | 9698a4a7ba105322ac67e9de362f9d94 |
|
BLAKE2b-256 | bb05c276d53aea932a44f5c50bbbcfd481faff4f922e7329fdd0a3b2d82dfc65 |