sparqlowlrdfsgraphdbrdfs+

RDFS analogue to owl:equivalentClass?


I have triples that say patient P participates in health care encounter E which has output M, a drug prescription. Prescriptions can mention a drug from the Drug Ontology, or DrOn.

In this case, let's say that M1 mentions the cholesterol-lowering medication atorvastatin, which was imported into DrOn from ChEBI as http://purl.obolibrary.org/obo/CHEBI_39548:

prefix obo: <http://purl.obolibrary.org/obo/> :M1 obo:IAO_0000142 obo:CHEBI_39548 .

ChEBI has an axiom that obo:CHEBI_39548 has the role http://purl.obolibrary.org/obo/CHEBI_35821, "anticholesteremic drug". That makes it easy to find patients who have been prescribed atorvastatin, or other drugs with the same role.

Unfortunately, DrOn created its own terms for some drugs instead of importing them from ChEBI. For example, another cholesterol-lowering drug, rosuvastatin, is modeled as http://purl.obolibrary.org/obo/DRON_00018679 instead of http://purl.obolibrary.org/obo/CHEBI_38545. ChEBI's term for rosuvastatin is also annotated with the role obo:CHEBI_39548, but obo:DRON_00018679 is not. So patients in my dataset who were prescribed rosuvastatin do not show up in my existing role-based query.

I have these data in a GraphDB RDFS-plus repository, and I'd prefer not to change the reasoning level right now. If it was an OWL repository, I would just say

obo:CHEBI_38545 owl:equivalentClass obo:DRON_00018679

Is there something similar I can do with RDFS, or a GraphDB custom ruleset?


Solution

  • If it was an OWL repository, I would just say

    obo:CHEBI_38545 owl:equivalentClass obo:DRON_00018679

    Is there something similar I can do with RDFS, or a GraphDB custom ruleset?

    First

    You obviously can replace owl:equivalentClass with two reciprocal rdfs:subClassOf. As for the very equivalence of these formulations, I suppose this is relevant:

    Second

    owl:equivalentClass is already within RDFS-Plus.

    From chapter 7 of the 1st edition of Semantic Web for the Working Ontologist, where RDFS-Plus was first introduced:

    RDFS-Plus provides a more intuitive expression of class equivalence, using the construct owl:equivalentClass.

    In GraphDB, the RDFS-Plus and RDFS-Plus (Optimized) rulesets support owl:equivalentClass. There are the following rule in the builtin_rdfsPlus-optimized.pie file:

    Id: owl_EquivClassBySubClass
    
      a <rdfs:subClassOf> b [Constraint b != a]
      b <rdfs:subClassOf> a [Cut]
    ------------------------------------
      a <owl:equivalentClass> b
    

    and the following axioms:

    <owl:equivalentClass> <rdf:type> <owl:TransitiveProperty>
    <owl:equivalentClass> <rdf:type> <owl:SymmetricProperty>
    <owl:equivalentClass> <rdfs:subPropertyOf> <rdfs:subClassOf>
    

    In higher profiles, two rules are used instead:

    Id: scm_eqc1
      c1 <owl:equivalentClass> c2            [Constraint c1 != c2 ]
      -------------------------------
      c1 <rdfs:subClassOf> c2
      c2 <rdfs:subClassOf> c1
    
    Id: scm_eqc2
      c1 <rdfs:subClassOf> c2                [Constraint c1 != c2 ]
      c2 <rdfs:subClassOf> c1                
      -------------------------------
      c1 <owl:equivalentClass> c2