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.
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 .
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.
The tool can be used in multiple ways:
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.
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
.
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
from pylode import OntDoc # initialise od = OntDoc(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.
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:
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.
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.
pyLODE is on PyPI, so you can install it using pip as normal:
pip install pylode
It's best to disable warnings to hide pointless warnings from the RDFLib library.
domainIncludes
& rangeIncludes
for propertiespyLODE 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.
The current release, as of April, 2023, is 3.0.5.
pyLODE Release Schedule Version Date Description 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 releaseThis code is licensed using the BSD 3-Clause licence. See the LICENSE file for the deed. Note Citation below though for attribution.
If you use pyLODE, please leave the pyLODE logo with a hyperlink back here in the top left of published HTML pages.
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!
Author:
Nicholas Car
Data Architect
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3