from ontoenv import OntoEnv, UnresolvedImportError, version
from rdflib import Graph
BRICK = "https://brickschema.org/schema/1.4/Brick"
print(f"OntoEnv {version}")
print("Connect: create on first use and graph-free warm-open later.")
env = OntoEnv.connect(
".",
search_directories=["../brick"],
strict=False,
offline=False,
)
if len(env) == 0:
env.update(force=True)
print(env)
g, closure_names = env.get_closure(BRICK)
print(
f"Brick closure has {len(g)} triples and includes "
f"the following ontologies: {closure_names}"
)
print("Working with local Brick")
brick = Graph()
brick.parse("../brick/Brick.ttl", format="turtle")
imported = env.import_dependencies(brick, fetch_missing=True)
print(
f"Brick graph has {len(brick)} triples after importing "
f"{len(imported)} ontologies"
)
missing = sorted(env.missing_imports())
print(f"Unresolved imports: {missing}")
if missing:
try:
env.copy_graph(missing[0])
except UnresolvedImportError as error:
print(f"Expected unresolved import: {error}")
brick_name = env.add("https://brickschema.org/schema/1.4.4/Brick.ttl")
print(f"Added {brick_name} to env")
env.close()
print("Reopen OntoEnv. Shoudl be warm read now")
env2 = OntoEnv.connect(".")
print(env2.store_path())
print("get brick again from URL")
brick = env2.get_graph(BRICK)
print(f"Brick graph has {len(brick)} triples")
brick = env2.copy_graph(BRICK)
print(f"Brick graph has {len(brick)} triples")
print("brick closure", env2.list_closure(BRICK))
env2.import_graph(brick, "https://w3id.org/rec")
brick.serialize("test.ttl", format="turtle")
print("qudtqk deps", env2.get_importers("http://qudt.org/2.1/vocab/quantitykind"))
ds = env2.get_dataset()
for graph in list(ds.graphs()):
print(f"Graph {graph.identifier} has {len(graph)} triples")
env2.close()