如何在SPARQL查询中对个人进行过滤?

问题描述 投票:1回答:1

我是这个语言和查询的新手。在Protege中,我正在使用PROV本体和FOAF,我还添加了一些我自己的实例和类。通过这个本体,我试图映射一个医学研究的过程。通过SPARQL查询,我想快速检索关于这个过程的重要信息。

我有多个问题。enter image description here

从上面的查询来看,输出的结果对我来说是有意义的。左边是一些研究论文(MetaAnalysis属于类MetaAnalysisPaper,Paper2属于类Research),右边是一些属于类Author的名字。

  1. 如何对MetaAnalysis进行过滤?这样只显示'MetaAnalysis wasAttributedTo (作者名)'关系,而不显示Paper2。
  2. 我如何对作者进行过滤,比如说Biederman?这样就只显示'MetaAnalysis wasAttributedTo Biederman'的关系。

下面是一个个人。enter image description here

我还有一个CImin个体,也属于ConfidenceInterval类,它有同样的wasGeneratedBy关系,值是0.12,定义方式和CImax一样。

  1. 我想要一个输出,给我CImax的值(0.39)和CImin的值(0.12)。是否可以通过一个查询来获得这两个输出?这个查询是什么样子的?如果不能用一个查询,那么只查询CImax的值是什么样子的?

先谢谢你。我的Turtle文件非常非常大,所以我决定不在这里上传,但如果有必要,请告诉我。

xml sparql rdf ontology protege
1个回答
1
投票

如何对MetaAnalysis进行过滤?这样只有 "MetaAnalysis wasAttributedTo (name of author) "关系显示出来,而不是Paper2。

你可以使用 筛选表达式. 例如,在你的例子中,你可以添加类似这样的内容。

FILTER(?property = lol:MetaAnalysis)

我说 "类似 "是因为在你的截图中,并不清楚资源的命名空间是什么 MetaAnalysis 是在。我是... 猜测 是Protege创建的默认本体命名空间(缩写为 lol 根据第一张图片),但您可能需要仔细检查。

我如何过滤作者,比如说Biederman?这样只有关系 "MetaAnalysis wasAttributedTo Biederman "会显示出来。

同样的想法,只是变量和值不同。

FILTER(?object = lol:Biederman) 

(这是在假设 Biederman 是你的数据中的资源URI,而不是一个字面值--从你的截图中看不清楚)

在WHERE子句(在语句模式之后)中放入任何一个过滤条件,你应该就可以了。

我想要一个输出,给我CImax的值(0.39)和CImin的值(0.12)。是否可以通过一个查询同时得到这两个输出?这个查询是什么样子的?如果一次查询不可能,那么只查询CImax的值会是什么样子?

是的,这是有可能的,有多种方式。你可以做的一件事是创建一个SPARQL查询,得到的是 类人 ConfidenceInterval 似的 ?ci rdf:type lol:ConfidenceInterval .)并抓取它们的值(如 ?ci lol:value ?value). 在一个SPARQL查询中结合这两种模式,以获得所有符合这两种模式的东西。根据需要,可以添加额外的过滤器和模式,使你的查询更加具体。

更笼统地说:你在这里要求的是真正基本的SPARQL。我建议你做一个教程,网上有几个非常好的教程,Google一下就能给你整理出来。

© www.soinside.com 2019 - 2024. All rights reserved.