OntoEnv is a simple tool for managing a collection of ontology definitions (instances of
owl:Ontology) and dependencies (
owl:imports statements). This is functionality that is often provided by modeling IDEs such as Protégé and TopBraid Composer, but seems currently lacking in the Python/RDFlib ecosystem. Once initialized in a directory, OntoEnv will search for all RDF files and resolve their
owl:imports statements, downloading remote files or resolving from local definitions as needed.
OntoEnv provides Python bindings which will import the ontology definitions for all
owl:imports statements into an
Typical usage looks as follows.
First, tell OntoEnv to figure out the dependency graph and cache the ontology/graph definitions.
$ ontoenv init # resolving imports can take a few seconds, depending on the number of dependencies $ ontoenv refresh # run 'refresh' if any dependencies change
Then, use the Python bindings to import ontology definitions into a graph
import rdflib import ontoenv # initialize environment env = ontoenv.OntoEnv() g = rdflib.Graph() g.parse("my_graph.ttl", format="ttl") env.import_dependencies(g)
dump: print the locations of all URIs known by
pip install ontoenv
An RDF graph can be associated with a URI by including a statement in the graph that the URI is an instance of
@prefix owl: <http://www.w3.org/2002/07/owl#> . <http://example.com/my/graph> a owl:Ontology . # ... other triples
Other RDF graphs can import the contents of
http://example.com/my/graph in their own
@prefix owl: <http://www.w3.org/2002/07/owl#> . <http://corporation.inc/my/other/graph> a owl:Ontology ; owl:imports <http://example.com/my/graph> .
OntoEnv has the option of transitively resolving these dependencies.