Search code examples
sparqlrdfontology

SPARQL query for preferred names of subclasses and their one top upper class


I'm new to SPARQL. I would like to get the preferred name of classes and their one top level upper classes and also their synonyms in the Radlex ontology, as hosted at BioPortal.

And The Output I want to see: output

Term: equal density subClassOf: density descriptor Synonym: isodens, equal-density,isodense

It looks like, the code below solved my problem, but still requires some modification. Because, it brings all off the upper classes but I only want one level upper class.

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT DISTINCT  ?concept ?subClassOf
WHERE
{ GRAPH <http://bioportal.bioontology.org/ontologies/RADLEX_OWL>
  { ?term  a <http://bioontology.org/projects/ontologies/radlex/radlexOwl#radlex_metaclass> ;
        <http://bioontology.org/projects/ontologies/radlex/radlexOwl#Preferred_name>  ?concept
  }
  ?term rdfs:subClassOf ?upperClass. 
  ?upperClass <http://bioontology.org/projects/ontologies/radlex/radlexOwl#Preferred_name>  ?subClassOf.
} LIMIT 10 OFFSET 10

Solution

  • PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX radlex: <http://bioontology.org/projects/ontologies/radlex/radlexOwlDlComponent#>
    
    SELECT DISTINCT ?term ?name ?synonym ?subClassOf ?subClassOf_name
    FROM <http://bioportal.bioontology.org/ontologies/RID>
    WHERE
    {
     ?term radlex:Preferred_name ?name .
     ?term radlex:Synonym ?synonym .
     ?term rdfs:subClassOf ?subClassOf .
     ?subClassOf radlex:Preferred_name ?subClassOf_name
    } LIMIT 10