Reasoning with the DBpedia Ontology

DBpedia Logo While working on the BBC newslabs project, it was important for us to be able to generalise across the DBpedia ontology class structure. We wanted to load the DBpedia ontology into our triple store so we could use it’s transitive class inheritance in our queries, and use the Sesame direct type hierarchy inferencer to determine the most specific type for queried DBpedia instances.

However, loading the DBpedia ontology into a triple store that performs RDFS and OWL reasoning (OWLIM 5.3 in this case) is not straightforward, as while the DBpedia 3.8 ontology in itself is reasonably well formed, the DBpedia instance data does not conform well to the ontology. Predicate domains and ranges are misused (re-purposed) throughout the instance data causing inference collapses in the triple store due to domain and range reasoning.

To get around this I created a DBpedia ontology (based on version 3.8) that has all the property domains removed, and ranges removed from all owl:ObjectProperty definitions, leaving only the property and class inheritance, and DatatypeProperty ranges. We could then load this ontology, meet our use cases, and not have to worry about materialising vast amounts of false statements in the repository.

If anyone needs to so the same, you can download the domain and range stripped version of the DBpedia 3.8 ontology here: https://gist.github.com/paulwilton/5407591