SPARQL 查询 subclasses 的首选名称及其最高 class
SPARQL query for preferred names of subclasses and their one top upper class
我是 SPARQL 的新手。我想获得 classes 的首选名称及其上层 classes 以及它们在 Radlex ontology, as hosted at BioPortal.
中的同义词
以及我想看到的输出:
output
Term:等密度
subClassOf: 密度描述符
同义词: isodens, equal-density,isodense
看起来,下面的代码解决了我的问题,但仍然需要一些修改。因为,它把所有的上层 classes 都带走了,但我只想要一个上层 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
看起来您的主要困难之一是找到从哪里开始,或者如何指定 Radlex 子classes 的根。
我没有使用 Radlex 的经验,而且我最近也没有使用过 Bioportal。当我在 Protege 中打开 Radlex ontology 时,它的 class 层次结构对我来说看起来很合理。但 Bioportal 终点的结果令人惊讶。
例如,RID5635 "coin" 是 RID5633 "personal item" 的子 class,并且是 radlex_metaclass 的实例,但 不是 owl:Class 的实例,正如我期望使用 OBO 铸造本体。看起来并不是所有的 Radlex subclasses 都来自 radlex_metaclass,所以这使得使用单个三重模式获取所有 subclasses 变得更加棘手
?s a owl:Class
看起来 Bioportal 端点也不支持 RDFS 属性 路径,所以我们不能请求
?s a rdfs:subClassOf* <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID1>
因此,我不能保证这个查询 returns Radlex 中的所有子 classes...只是 [=] 的所有直接子classes 42=]
最后,正如 AKSW 指出的那样,http://bioontology.org/projects/ontologies/radlex/radlexOwl# 是 ontology 的名称,而不是超级 class。它没有 subclasses 并且不是我在这个答案顶部描述的根查找问题的解决方案。
我添加了一个命名图限制,但这可能没有做任何尚未通过请求 http://bioontology.org/projects/ontologies/radlex/radlexOwl#radlex_metaclass 个实例完成的事情。
SELECT DISTINCT *
WHERE
{ GRAPH <http://bioportal.bioontology.org/ontologies/RADLEX_OWL>
{ ?radlexclass a <http://bioontology.org/projects/ontologies/radlex/radlexOwl#radlex_metaclass> ;
<http://bioontology.org/projects/ontologies/radlex/radlexOwl#Preferred_name> ?prefName
}
}
给出这样的结果
+------------------------------------------------------------------------+---------------------------------------------------------------------+
| radlexclass | prefName |
+------------------------------------------------------------------------+---------------------------------------------------------------------+
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID19012> | "posterior root of left first sacral nerve" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID23593> | "nerve to third posterior cervical intertransversarius" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID11053> | "hydrophilic wire" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID5825> | "right" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID18947> | "posterior root of sixth cervical nerve" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID16116> | "set of short association fibers of telencephalon" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID23701> | "left third thoracic nerve" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID23274> | "ascending branch of meningeal branch of right second sacral nerve" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID25244> | "right intermediomedial nucleus" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID5699> | "coalescent" |
+------------------------------------------------------------------------+---------------------------------------------------------------------+
等等
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
我是 SPARQL 的新手。我想获得 classes 的首选名称及其上层 classes 以及它们在 Radlex ontology, as hosted at BioPortal.
中的同义词以及我想看到的输出: output
Term:等密度 subClassOf: 密度描述符 同义词: isodens, equal-density,isodense
看起来,下面的代码解决了我的问题,但仍然需要一些修改。因为,它把所有的上层 classes 都带走了,但我只想要一个上层 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
看起来您的主要困难之一是找到从哪里开始,或者如何指定 Radlex 子classes 的根。
我没有使用 Radlex 的经验,而且我最近也没有使用过 Bioportal。当我在 Protege 中打开 Radlex ontology 时,它的 class 层次结构对我来说看起来很合理。但 Bioportal 终点的结果令人惊讶。
例如,RID5635 "coin" 是 RID5633 "personal item" 的子 class,并且是 radlex_metaclass 的实例,但 不是 owl:Class 的实例,正如我期望使用 OBO 铸造本体。看起来并不是所有的 Radlex subclasses 都来自 radlex_metaclass,所以这使得使用单个三重模式获取所有 subclasses 变得更加棘手
?s a owl:Class
看起来 Bioportal 端点也不支持 RDFS 属性 路径,所以我们不能请求
?s a rdfs:subClassOf* <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID1>
因此,我不能保证这个查询 returns Radlex 中的所有子 classes...只是 [=] 的所有直接子classes 42=]
最后,正如 AKSW 指出的那样,http://bioontology.org/projects/ontologies/radlex/radlexOwl# 是 ontology 的名称,而不是超级 class。它没有 subclasses 并且不是我在这个答案顶部描述的根查找问题的解决方案。
我添加了一个命名图限制,但这可能没有做任何尚未通过请求 http://bioontology.org/projects/ontologies/radlex/radlexOwl#radlex_metaclass 个实例完成的事情。
SELECT DISTINCT *
WHERE
{ GRAPH <http://bioportal.bioontology.org/ontologies/RADLEX_OWL>
{ ?radlexclass a <http://bioontology.org/projects/ontologies/radlex/radlexOwl#radlex_metaclass> ;
<http://bioontology.org/projects/ontologies/radlex/radlexOwl#Preferred_name> ?prefName
}
}
给出这样的结果
+------------------------------------------------------------------------+---------------------------------------------------------------------+
| radlexclass | prefName |
+------------------------------------------------------------------------+---------------------------------------------------------------------+
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID19012> | "posterior root of left first sacral nerve" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID23593> | "nerve to third posterior cervical intertransversarius" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID11053> | "hydrophilic wire" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID5825> | "right" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID18947> | "posterior root of sixth cervical nerve" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID16116> | "set of short association fibers of telencephalon" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID23701> | "left third thoracic nerve" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID23274> | "ascending branch of meningeal branch of right second sacral nerve" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID25244> | "right intermediomedial nucleus" |
| <http://bioontology.org/projects/ontologies/radlex/radlexOwl#RID5699> | "coalescent" |
+------------------------------------------------------------------------+---------------------------------------------------------------------+
等等
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