I am trying to get all synonyms for anatomical terms from NCBI's MeSH, but it seems like the low(est?) level terms are being omitted.
"NK cell" is definitely a synonym for "Killer Cells, Natural", http://purl.bioontology.org/ontology/MESH/D007694, which is a descendant of the MeSH "Anatomy Category" http://purl.bioontology.org/ontology/MESH/U000002
http://www.ncbi.nlm.nih.gov/mesh/68007694
I have loaded the triples from http://bioportal.bioontology.org/ontologies/MESH into a Virtuoso server in AWS/EC2.
"NK cell" does not appear in a query of all subclasses from mesh:U000002:
PREFIX mesh: <http://purl.bioontology.org/ontology/MESH/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
select ?s ?o where {
?s skos:altLabel ?o
{ select ?s
where {
{ ?s rdfs:subClassOf* mesh:U000002 } .
}
}
}
Could there be
- some recursion limits or max # rows limits in Virtuoso?
- something peculiar about MeSH ?
"NK cell" does appear in a query starting just one level lower, "Cells", http://purl.bioontology.org/ontology/MESH/D002477.
PREFIX mesh: <http://purl.bioontology.org/ontology/MESH/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
select ?s ?o where {
?s skos:altLabel ?o
{ select ?s
where {
{ ?s rdfs:subClassOf* mesh:D002477 } .
}
}
}