Я просмотрел документы Owlready2, но это не говорит о том, как это сделать. Я загружаю файл dbpedia.owl и перебираю все свойства. Я могу просто прочитать подвойство, но не домен или диапазон. Одна запись OntoProperty показана ниже.
<owl:ObjectProperty rdf:about="http://dbpedia.org/ontology/artist">
<rdfs:domain rdf:resource="http://dbpedia.org/ontology/MusicalWork"/>
<rdfs:range rdf:resource="http://dbpedia.org/ontology/Agent"/>
</owl:ObjectProperty>
from owlready2 import *
onto_path.append("../")
onto = get_ontology("dbpedia.owl")
onto.load()
propertiesGen = onto.properties()
# getting propery and sub property relationships
propertyToSubProperties = {}
propertiesCount = 0
for ontoProperty in propertiesGen:
subPropertiesList = list(ontoProperty.subclasses())
print(ontoProperty.rdf_label)
# print (list(ontoProperty.subclasses()))
if len(subPropertiesList) > 0:
propertyToSubProperties[ontoProperty] = subPropertiesList
print (ontoProperty, subPropertiesList, "\n")
propertiesCount += 1