Skip to content
Snippets Groups Projects
Commit 5a8b62e3 authored by Bugra Altug's avatar Bugra Altug
Browse files

extract equivalence correction

parent 58415add
No related branches found
No related tags found
No related merge requests found
...@@ -283,7 +283,7 @@ class OntologyParser: ...@@ -283,7 +283,7 @@ class OntologyParser:
# Direct/Indirect imports need to be deleted from ontologies (or imported as seperate. see Owlready2 documentation). Protege can be used for this. # Direct/Indirect imports need to be deleted from ontologies (or imported as seperate. see Owlready2 documentation). Protege can be used for this.
# OWL 2.0 ontologies in NTriples, RDF/XML or OWL/XML format are supported. (OWL/XML is recommended.) # OWL 2.0 ontologies in NTriples, RDF/XML or OWL/XML format are supported. (OWL/XML is recommended.)
# Relation (A is a B, B is a C, C is a A) is not supported: http://owlready.306.s1.nabble.com/TypeError-metaclass-conflict-td2889.html # Relation (A is a B, B is a C, C is a A) is not supported: http://owlready.306.s1.nabble.com/TypeError-metaclass-conflict-td2889.html
def parse(self, _loc:str, _include_only:OntologyClassTypes=None, _use_reasoner=True, _only_local:bool=True) -> OntologyData: def parse(self, _loc:str, _include_only:[OntologyClassTypes]=None, _use_reasoner=True, _only_local:bool=True) -> OntologyData:
self._data = OntologyData() self._data = OntologyData()
try: try:
Loggers.info(LoggerTypes.LOAD_SERVICE, "Parsing ontology "+str(_loc)) Loggers.info(LoggerTypes.LOAD_SERVICE, "Parsing ontology "+str(_loc))
...@@ -400,13 +400,9 @@ class OntologyParser: ...@@ -400,13 +400,9 @@ class OntologyParser:
def _fill_indirect_class_datatype(self, subject, property, value): def _fill_indirect_class_datatype(self, subject, property, value):
if isinstance(property, or2.DataPropertyClass): # Datatype if isinstance(property, or2.DataPropertyClass): # Datatype
if isinstance(value, or2.LogicalClassConstruct): values = self._extract_range_construct_information(value)
logical_values = self._extract_class_construct_information(value) self._data.safe_append_class_indirectdatatypes(self._get_iri(subject), values)
logical_values = [self._get_iri(v) for _, v in logical_values] elif type(value)==subject: # Individuals will use their parent data types. This is done in the "get_individual_datatypes"
self._data.safe_append_class_indirectdatatypes(self._get_iri(subject), logical_values)
elif isinstance(value, type):
self._data.safe_append_class_indirectdatatypes(self._get_iri(subject), [self._get_iri(value)])
elif type(value)==subject: # Individuals will use their parent data types.
self._data.safe_append_class_indirectdatatypes(self._get_iri(subject), []) self._data.safe_append_class_indirectdatatypes(self._get_iri(subject), [])
def _fill_indirectly_defined_object_property_class(self, property, value): def _fill_indirectly_defined_object_property_class(self, property, value):
...@@ -424,11 +420,9 @@ class OntologyParser: ...@@ -424,11 +420,9 @@ class OntologyParser:
Loggers.info(LoggerTypes.LOAD_SERVICE, "Extracting class construct information.") Loggers.info(LoggerTypes.LOAD_SERVICE, "Extracting class construct information.")
if isinstance(class_construct, or2.Restriction): if isinstance(class_construct, or2.Restriction):
Loggers.info(LoggerTypes.LOAD_SERVICE, "("+str(class_construct.value)+") Extracting restriction.") Loggers.info(LoggerTypes.LOAD_SERVICE, "("+str(class_construct.value)+") Extracting restriction.")
if isinstance(class_construct.value, or2.Restriction): if isinstance(class_construct.value, or2.Restriction): # property chain (op some (dp exactly 1 int))
#return [(class_construct.property, class_construct.value.property)] + self._extract_class_construct_information(class_construct.value) # Gets all chained relations #return [(class_construct.property, class_construct.value.property)] + self._extract_class_construct_information(class_construct.value) # Gets all chained relations
return self._extract_class_construct_information(class_construct.value) # Gets only chain end. return self._extract_class_construct_information(class_construct.value) # Gets only chain end.
elif isinstance(class_construct.value, or2.ConstrainedDatatype):
return [(class_construct.property, class_construct.value.base_datatype)]
else: else:
return [(class_construct.property, class_construct.value)] return [(class_construct.property, class_construct.value)]
elif isinstance(class_construct, or2.LogicalClassConstruct): # Complex construction with logical operators elif isinstance(class_construct, or2.LogicalClassConstruct): # Complex construction with logical operators
...@@ -455,11 +449,6 @@ class OntologyParser: ...@@ -455,11 +449,6 @@ class OntologyParser:
Loggers.info(LoggerTypes.LOAD_SERVICE, "("+str(class_construct.property)+") Extracting inverse.") Loggers.info(LoggerTypes.LOAD_SERVICE, "("+str(class_construct.property)+") Extracting inverse.")
# [(type(class_construct) , class_construct.property)] # [(type(class_construct) , class_construct.property)]
return [] return []
elif isinstance(class_construct, type):
Loggers.info(LoggerTypes.LOAD_SERVICE, "("+str(class_construct)+") Extracting python type.")
return [(str(type(class_construct)), class_construct)]
elif hasattr(class_construct, 'value') and isinstance(class_construct.value, or2.ConstrainedDatatype):
return [(class_construct.property, class_construct.value.base_datatype)]
else: else:
Loggers.error(LoggerTypes.LOAD_SERVICE, "In class_construct_information unknown type:"+str(type(class_construct))) Loggers.error(LoggerTypes.LOAD_SERVICE, "In class_construct_information unknown type:"+str(type(class_construct)))
return [] return []
...@@ -505,7 +494,7 @@ class OntologyParser: ...@@ -505,7 +494,7 @@ class OntologyParser:
tmp += self._extract_range_construct_information(cls) tmp += self._extract_range_construct_information(cls)
return tmp return tmp
else: else:
Loggers.error(LoggerTypes.LOAD_SERVICE, "In range_construct_information unknown type:"+str(type(_construct))) Loggers.error(LoggerTypes.LOAD_SERVICE, "In range_construct_information unknown: \"" + str(_construct) + "\" type: \""+str(type(_construct)) + "\".")
return [] return []
def _get_name(self, _entity:or2) -> str: def _get_name(self, _entity:or2) -> str:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment