Step 1: convert ntriples to rdf/xml.
Source file: ./ontology_data/base.n3 (taken from https://github.com/OMDoc/OMDoc/blob/master/owl/base.n3)
from rdflib import Graph
import importlib
import owlready2 as owl2
import sys
# source: https://github.com/OMDoc/OMDoc/blob/master/owl/base.n3
fname = "ontology_data/base.n3"
g = Graph()
g.parse(fname)
dest_fname = fname.replace(".n3", ".rdf.xml")
g.serialize(destination=dest_fname, format="xml")
pass
Step 2: load this file with owlready. In about 50% of the cases this works without problems, in the other cases a UnboundLocalError
is raised.
onto = owl2.get_ontology(dest_fname).load()
--------------------------------------------------------------------------- UnboundLocalError Traceback (most recent call last) Input In [2], in <module> ----> 1 onto = owl2.get_ontology(dest_fname).load() File /media/workcard/workstickdir/RST/expertise_system/ontologie_experimente/owlready2_repo_parent/owlready2/namespace.py:1010, in Ontology.load(self, only_local, fileobj, reload, reload_if_newer, url, **args) 1007 self._imported_ontologies._set(imported_ontologies) 1009 # Search for property names -- must be done AFTER loading imported ontologies, because the properties might be partly defined in the imported ontologies -> 1010 if self.world.graph.indexed: self._load_properties() 1012 # Import Python module 1013 global default_world, IRIS, get_ontology File /media/workcard/workstickdir/RST/expertise_system/ontologie_experimente/owlready2_repo_parent/owlready2/namespace.py:1041, in Ontology._load_properties(self) 1039 props = [] 1040 for prop_storid in itertools.chain(self._get_obj_triples_po_s(rdf_type, owl_object_property), self._get_obj_triples_po_s(rdf_type, owl_data_property), self._get_obj_triples_po_s(rdf_type, owl_annotation_property)): -> 1041 Prop = self.world._get_by_storid(prop_storid) 1042 python_name_d = self.world._get_data_triple_sp_od(prop_storid, owlready_python_name) 1044 if not isinstance(Prop, PropertyClass): File /media/workcard/workstickdir/RST/expertise_system/ontologie_experimente/owlready2_repo_parent/owlready2/namespace.py:690, in World._get_by_storid(self, storid, full_iri, main_type, main_onto, trace, default_to_none) 687 if not entity is None: return entity 689 try: --> 690 return self._load_by_storid(storid, full_iri, main_type, main_onto, default_to_none) 691 except RecursionError: 692 return self._load_by_storid(storid, full_iri, main_type, main_onto, default_to_none, ()) File /media/workcard/workstickdir/RST/expertise_system/ontologie_experimente/owlready2_repo_parent/owlready2/namespace.py:822, in World._load_by_storid(self, storid, full_iri, main_type, main_onto, default_to_none, trace) 819 if is_a_bnodes: 820 list.extend(entity.is_a, (onto._parse_bnode(bnode) for onto, bnode in is_a_bnodes)) --> 822 return entity UnboundLocalError: local variable 'entity' referenced before assignment