Search code examples
owlsemantic-webgraphdb

Horst (pD*) compared to OWL2-RL


We are using GraphDB 8.4.0 as a triple store for a large data integration project. We want to make use of the reasoning capabilities, and are trying to decide between using HORST (pD*) and OWL2-RL.
However, the literature describing these is quite dense. I think I understand that OWL2-RL is more "powerful", but I am unsure how so. Can anyone provide some examples of the differences between the two reasoners? What kinds of statements are inferred by OWL2-RL, but not HORST (and vice versa)?


Solution

  • After thinking this for bit, I came up with a concrete example. The Oral Health and Disease Ontology (http://purl.obolibrary.org/obo/ohd.owl) contains three interrelated entities:

    • a restored tooth
    • a restored tooth surface that is part of the restored tooth
    • a tooth restoration procedure that creates the restored tooth surface (e.g., when you have a filling placed in your tooth)

    The axioms that define these entities are (using pseudo Manchester syntax):

    restored tooth equivalent to Tooth and has part some dental restoration material
    restored tooth surface subclass of part of restored tooth
    filling procedure has specified output some restored tooth surface
    

    The has specified output relation is a subproperty of the has participant relation, and the has participant relation contains the property chain:

    has_specified_input o 'is part of'
    

    The reason for this property chain is for reasoner to infer that if a tooth surface participates in a procedure, then the whole tooth that the surface is part of participates in the procedure, and, furthermore, the patient that the tooth is part of also participates in the procedure (due to the transitivity of part of).

    As a concrete example, let define some individuals (using pseudo rdf):

    :patient#1 a :patient .
    :tooth#1 a :tooth; :part-of :patient#1
    :restored-occlusal#1 a :restored-occlusal-surface; :part-of tooth#1 .
    :procedure#1 :has-specified-output :restored-occlusal#1 .
    

    Suppose you want to query for all restored teeth:

    select ?tooth where {?tooth a :restored-tooth}
    

    RDFS-Plus reasoning will not find any restored teeth b/c it doesn't reason over equivalent classes. But, OWL-Horst and OWL2-RL will find such teeth.

    Now, suppose you want to find all patients that underwent (i.e. participated in) a tooth restoration procedure:

    select ?patient where {
        ?patient a patient: .
        ?proc a tooth_restoration_procedure:; has_participant: ?patient .
    }
    

    Again, RDFS-Plus will not find any patients, and neither will OWL-Horst b/c this inference requires reasoning over the has participant property chain. OWL2-RL is needed in order to make this inference.

    I hope this example is helpful for the interested reader :).

    I welcome comments to improve the example. Please keep any comments within the scope of trying to make the example clearer. Its purpose is to give insight into what these different levels of reasoning do and not to give advice about which reasoner is most appropriate.