问题描述
我创建了一个图,它由应用程序本体+病人ID(PID)到本体中特定节点的注释组成。输入数据由一列PID组成,每个PID都用制表符分隔的本体术语ID列表进行注释。添加到图形(使用rdflib)的输入数据如下所示:
PID TERM ID
100011 MSPD_0002046 MSPD_0002037 MSPD_0002056
100019 MSPD_0002044 MSPD_0002046 MSPD_0002055
100028 MSPD_0002055
100030 MSPD_0002046 MSPD_0002049 MSPD_0002036 MSPD_0002055
我是SPARQL的新手,并编写了一个查询,该查询将提取Class ID,标签和IRI类,以及注释每个本体术语的所有患者的计数。输出看起来像这样:
ClassLabel class_ID instance_count
entity BFO_0000001 2204
continuant BFO_0000002 2204
.
.
.
conclusion about sensation MSPD_0002024 1479
数据帧的长度约为50行,本体的每个节点一行。
我的问题是:执行查询时,上层节点的输出值不正确。该值仅对叶节点正确。我的顾问似乎认为这是由于不相交的类使查询混乱所致,但认为我们不需要以任何方式更改本体。
在解释这些不相交的类时,如何使用SPARQL访问所需的信息?有没有办法做到这一点,还是我需要使用一种完全不同的方法?
以下是我正在使用的SPARQL查询:
"""prefix mspd: <http://purl.obolibrary.org/obo/MSPD_>
prefix rdfs: <http://www.w4.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
select ?class_iri (count(distinct ?instance_iri) a ?instance_count)
where {
?class_iri a owl:Class .
?instance_iri a ?class_iri;
mspd:patient_id ?pid .
}
group by ?class_iri
order by ?class_iri
"""
非常感谢您提出任何建议,如果有任何不清楚的地方,请告诉我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)