如何在包含不相交类的图上使用SPARQL查询?

问题描述

我创建了一个图,它由应用程序本体+病人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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...