robot
robot copied to clipboard
Reduce operation with property chains
For the given ontology:
Prefix(:=<http://purl.obolibrary.org/obo/test.owl#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)
Ontology(<http://purl.obolibrary.org/obo/test.owl>
Declaration(Class(<http://purl.obolibrary.org/obo/Kupffer_cell>))
Declaration(Class(<http://purl.obolibrary.org/obo/liver>))
Declaration(Class(<http://purl.obolibrary.org/obo/liver_lobule>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/located_in>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/part_of>))
############################
# Classes
############################
# Class: <http://purl.obolibrary.org/obo/Kupffer_cell> (<http://purl.obolibrary.org/obo/Kupffer_cell>)
SubClassOf(<http://purl.obolibrary.org/obo/Kupffer_cell> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/located_in> <http://purl.obolibrary.org/obo/liver>))
SubClassOf(<http://purl.obolibrary.org/obo/Kupffer_cell> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/located_in> <http://purl.obolibrary.org/obo/liver_lobule>))
# Class: <http://purl.obolibrary.org/obo/liver_lobule> (<http://purl.obolibrary.org/obo/liver_lobule>)
SubClassOf(<http://purl.obolibrary.org/obo/liver_lobule> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/part_of> <http://purl.obolibrary.org/obo/liver>))
SubObjectPropertyOf(ObjectPropertyChain(<http://purl.obolibrary.org/obo/located_in> <http://purl.obolibrary.org/obo/part_of>) <http://purl.obolibrary.org/obo/located_in>)
)
below assertion can already be inferred through partonomy + property chain located_in o part_of → located_in
SubClassOf(<http://purl.obolibrary.org/obo/Kupffer_cell> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/located_in> <http://purl.obolibrary.org/obo/liver>))
So this statement is redundant and should be stripped by the reduce command. But the reduce operation doesn't delete it now.
If this can be fixed, I'd be happy for it to be optional switch on 'reduce'. It's possible that other types of redundancy are being missed too, so it would be good document further.