Skip to main content

An OWL ontology documentation tool using Python, based on LODE.

Project description

https://rawcdn.githack.com/RDFLib/pyLODE/master/img/pyLODE-250.png https://badge.fury.io/py/pyLODE.svg

pyLODE

An OWL ontology documentation tool using Python, based on LODE.

In addition to making web page, human-readable forms of ontologies, pyLODE encourages ontology annotation best practice by only producing good results for well documented inputs! pyLODE defines what it considers ‘well documented’ in sections below, e.g. What pyLODE understands.

New mode: In v3.1.0, pyLODE now has a new mode called supermodel, in addition to the existing ontpub mode. This new mode allows for documenting profiles and modules of multi-part models. See supermodel.md for more information.


A note on the v 3.x change

This is pyLODE version 3.0.1 and it’s vastly different from pyLODE 2.x. It doesn’t yet handle all the various “profiles” that pyLODE 2.13.2 does, such as SKOS ‘vocabularies’ & Profiles Vocabulary ‘profiles’, it only handles OWL ‘ontologies’, nor all the special data types, such as JSON literals, BUT, it generates HTML in a much more straightforward manner and the code is both more efficient and much more maintainable, which is why it’s been made.

v 3.x will eventually catch up to all of v 2.13.2’s features.

To access v 2.13.2 of pyLODE, either download it from PyPI , check it out from GitHub or access it via the online service .


Contents

  1. Quick Intro

  2. Use

  3. What pyLODE understands

  4. Examples

  5. Installation

  6. Testing

  7. Differences from LODE

  8. Releases

  9. License

  10. Citation

  11. Collaboration

  12. Contacts

Quick Intro

The Live OWL Documentation Environment tool (LODE) is a well-known (in Semantic Web circles) Java & XSLT-based tool used to generate human-readable HTML documents for OWL and RDF ontologies. That tool is now a bit dated (old-style HTML, use of older technologies like XSLT) and its (online version) is not always online.

This tool is a complete re-implementation of LODE’s functionality using Python and Python’s RDF manipulation module, rdflib. An ontology to be documented is parsed and inspected using rdflib and HTML is generated directly, using Python’s dominate package.

Use

The tool can be used in multiple ways:

  • BASH command line script
    • pyLODE.sh in bin/

  • Windows EXE
    • pyLODE.exe in bin/

  • Mac executable
    • pyLODE in bin/

  • Python Script
    • cli.py or module

  • as-a-service locally
  • as-a-service online

Command line arguments

The BASH, Windows EXE and Python Script methods all use the same command line arguments:

usage: cli.py [-h] [-v] [-o OUTPUTFILE] [-c {true,false}] input

positional arguments:
    input                 Input file location or URL

optional arguments:
    -h, --help          show this help message and exit
    -v, --version       show program's version number and exit
    -o OUTPUTFILE,
    --outputfile OUTPUTFILE
                        A name you wish to assign to the output file. Will be
                        postfixed with .html if not already added. If no
                        output file is given, output will be printed to screen
    -c {true,false},
    --css {true,false}
                        Whether (true) or not (false) to include CSS within an
                        output HTML file.
Basic Use
  • as a Python script

  • executed in this directory

python pylode examples/ontpub/minimal.ttl -o minimal.html

This will produce the file minimal.html in this directory which should match exactly the file examples/minimal.html.

  • as a docker container

build the docker image:

docker build -t pylode:latest .

copy the example directory, mount it to the container and run cli.py in the container:

docker  run  --mount 'type=bind,src=<ttl_directory>,target=/app/pylode/data' pylode:latest  python3.10 pylode/cli.py data/<ttl_file> -o data/<html_file>

Note: <ttl_directory> must be absolute

Module Use

for OWL:

from pylode.profiles.ontpub import OntPub

# initialise
od = OntPub(ontology="some-ontology-file.ttl")

# produce HTML
html = od.make_html()

# or save HTML to a file
od.make_html(destination="some-resulting-html-file.html")

for SKOS:

from pylode.profiles.vocpub import VocPub

# initialise
od = VocPub(ontology="some-ontology-file.ttl")

# produce HTML
html = od.make_html()

# or save HTML to a file
od.make_html(destination="some-resulting-html-file.html")

This will read from some-ontology-file.ttl to produce the file some-resulting-html-file.html in this directory.

Examples

The examples/ directory contains multiple pairs of RDF & HTML files generated from them using this version of pyLODE.

You can also see rendered versions of these example files online too:

What pyLODE understands

pyLODE knows about definitional ontologies (owl:Ontology) and the major elements usually found in them, such as classes (owl:Class or rdf:Class) and properties (rdf:Property & owl:ObjectProperty etc.).

To see what properties for ontology, class and RDF property documentation pyLODE currently supports, just look in the rdf_elements.py file. All elements’ properties supported are given in property lists there.

pyLODES won’t just translate everything that you can describe in RDF into HTML! This is a conscious design choice to ensure that a certain conventional style of documented ontology is produced. However, support for new properties and ontology patterns can be made - just create an Issue on this project’s Issue tracker.

While it does know about instance data, such as Named Individuals, it’s not really designed to document large ontologies containing class instances.

Notes on Agents

pyLODE can understand both simple and complex Agent objects. You can use simple string properties like dc:contributor "Nicholas J. Car" too if you really must but better would be to take advantage of real Linked Data representation, e.g. complex Agent objects with web addresses, emails, affiliations, ORCIDs and so on, e.g.:

<ontology_x>
    dct:creator [
        sdo:name "Nicholas J. Car" ;
        sdo:identifier <http://orcid.org/0000-0002-8742-7730> ;
        sdo:affiliation [
            sdo:name "SURROUND Australia Pty Ldt." ;
            sdo:url "https://surroundaustralia.com"^^xsd:anyURI ;
        ] ;
    ] ;
.

See all the properties in rdf_elements.py:AGENT_PROPS for a list of all the Agent properties pyLODE can handle.

Installation

pyLODE is on PyPI, so you can install it using pip as normal:

pip install pylode

Testing

It’s best to disable warnings to hide pointless warnings from the RDFLib library.

python -m pytest tests --disable-warnings

Differences from LODE

  • command line access

    • you can use this on your own desktop so you don’t need me to maintain a live service for use

  • use of modern simple HTML

    • no JavaScript: pyLODE generates static HTML pages

  • catering for a wider range of ontology options such as:

    • schema.org domainIncludes & rangeIncludes for properties

  • better Agent representation

  • smarter CURIES

    • pyLODE caches and looks up well-known prefixes to make more/better CURIES

    • it tries to be smart with CURIE presentation by CURIE-ising all URIs it finds, rather than printing them

  • reference ontologies property labels

    • pyLODE caches ~ 10 well-known ontologies (RDFS, SKOS etc), properties from which people often use for their ontology documentation. Where these properties are used, the background ontology’s labels are use

  • active development

    • pyLODE has been under active development since mid-2019 and is still very much actively developed - it’s not just staying still

    • it will be improved in foreseeable to cater for more and more things

    • recent ontology documentation initiatives such as the MOD Ontology will be handled, if requested

Releases

pyLODE is under continual and constant development. The current developers have a roadmap for enhancements in mind, which is given here, however, since this is an open source project, new developers may join the pyLODE dev community and change/add development priorities.

Current Release

The current release, as of July, 2024, is 3.2.0.

Release Schedule

pyLODE Release Schedule

Version

Date

Description

3.2.0

27 July 2024

dependency updates and merged multiple small PRs

3.1.4

6 April 2024

Fix load_ontology function’s detection of data input

3.1.3

18 March 2024

Relax rdflib version constraint

3.1.2

18 March 2024

Relax httpx version constraint

3.1.1

19 February 2024

Fix release

3.1.0

19 February 2024

Add supermodel mode - supports documenting profiles and modules

3.0.5

27 April 2023

Minor patching

3.0.4

24 May 2022

Use of Poetry

3.0.2

24 May 2022

Support for preformatted skos:example literals

3.0.1

6 Jan 2022

Direct HTML generation using dominate; easier to maintain and extend

2.13.2

21 December 2021

Updated RDFlib to 6.1.1, improved test to properly use pytest

2.10.0

24 May 2021

Update Windows EXE build process, simplified versioning

2.9.1

28 Apr 2021

Support for ASCIIDOC format (OntDoc profile only)

2.8.11

28 Apr 2021

Further changes for PyPI only

2.8.10

27 Apr 2021

Further changes for PyPI only

2.8.9

27 Apr 2021

PyPI enhancements only

2.8.8

27 Apr 2021

Several small bugs fixed, auto-generation of version no. from Git tag

2.8.6

23 Feb 2021

Fixing char encoding issues, updated examples, new test files style - per issue

2.8.5

5 Jan 2021

Small enhancements to the Falcon server deployment option

2.8.3

3 July 2020

Packaging bugfixes only

2.7

1 July 2020

Much refactoring for new profile creation ease

2.6

June 2020

Supports PROF profiles as well as taxonomies & ontologies

2.4

27 May 2020

Small improvements over 2.0

2.0

18 Apr 2020

Includes multiple profiles - OWP & vocpub

1.0

15 Dec 2019

Initial working release

License

This code is licensed using the BSD 3-Clause licence. See the LICENSE file for the deed. Note Citation below though for attribution.

Citation

If you use pyLODE, please leave the pyLODE logo with a hyperlink back here in the top left of published HTML pages.

Collaboration

The maintainers welcome any collaboration.

If you have suggestions, please email the contacts below or leave Issues in this repository’s Issue tracker.

But the very best thing you could do is create a Pull Request for us to action!

Contacts

Author:
Nicholas Car
Data Architect

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

pylode-3.2.0.tar.gz (676.8 kB view details)

Uploaded Source

Built Distribution

pylode-3.2.0-py3-none-any.whl (693.7 kB view details)

Uploaded Python 3

File details

Details for the file pylode-3.2.0.tar.gz.

File metadata

  • Download URL: pylode-3.2.0.tar.gz
  • Upload date:
  • Size: 676.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0b5 Darwin/23.5.0

File hashes

Hashes for pylode-3.2.0.tar.gz
Algorithm Hash digest
SHA256 62cdb36cea622d82c6dd7b460016ad4ef858201d7959b28cc9b704d7a5317f48
MD5 80bcba425d818b0a33e484cba10a451c
BLAKE2b-256 1ba1e556e82088b352a2d71286c48030b1c896fbc923b93f4b357e3e4f4e10ef

See more details on using hashes here.

File details

Details for the file pylode-3.2.0-py3-none-any.whl.

File metadata

  • Download URL: pylode-3.2.0-py3-none-any.whl
  • Upload date:
  • Size: 693.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0b5 Darwin/23.5.0

File hashes

Hashes for pylode-3.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0a450d76b1c6a1342e0655ebd9f31c12bc348a2598676c3a3177ac6a36796ca5
MD5 4877edb74f95d95a94b36f5b0b4d5970
BLAKE2b-256 1dc81859f607a4bf45adff562363c6d5ccd475f5bcf2d1ba4ec31639a48eab23

See more details on using hashes here.

Supported by

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