SPARQL query to find all sub classes and a super class of a given class

后端 未结 1 807
心在旅途
心在旅途 2021-01-05 23:07

I need to write a SPARQL query to find a superclass/subclasses of a given class.

For example, given http://139.91.183.30:9090/RDF/VRP/Examples/Phenomenon.rdf RDFS vo

相关标签:
1条回答
  • 2021-01-05 23:48

    The predicate used in rdfs for state sub/super class relationships is rdfs:subClassOf. With that in mind you just need to write triple patterns in your SPARQL query that bind that predicate and the subject or object that you want to match --- AcousticWave in your case.

    I hope that the following queries are self-explanatory.

    for super classes ...

    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX ns: <http://www.domain.com/your/namespace/>
    
    SELECT ?superClass WHERE { ns:AcousticWave rdfs:subClassOf ?superClass . }
    

    And for sub classes ...

    SELECT ?subClass WHERE { ?subClass rdfs:subClassOf ns:Wave . }
    

    If you want to retrieve the labels for every subclass of ns:Wave you would do something like ...

    SELECT ?subClass ?label WHERE { 
            ?subClass rdfs:subClassOf ns:Wave . 
            ?subClass rdfs:label ?label . 
    }
    

    If you need the transitive closure of sub/super classes then you have two options:

    1. Iterate recursively over these queries until you have collected the closure.
    2. Pass your RDF data through a RDF/RDFS reasoner to forward chain all entailments and assert these in your RDF database.
    0 讨论(0)
提交回复
热议问题