Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用“获取所有文章”;“时间点”;SPARQL中的属性_Sparql_Wikidata - Fatal编程技术网

使用“获取所有文章”;“时间点”;SPARQL中的属性

使用“获取所有文章”;“时间点”;SPARQL中的属性,sparql,wikidata,Sparql,Wikidata,我想查询所有具有P585属性(时间点)的维基百科文章。不幸的是,其中一些非常模糊,并且位于子属性下,如图中所示。我希望能够过滤这些日期,无论它们在什么属性下 查询:“?item p:P585/ps:P585?date.”只会在时间点是根类别的地方返回结果,并且无论我尝试什么,我都无法在某个地方获得所有包含“时间点”的文章。或者,如果不可能,至少我希望能够指定“重大事件/*/时间点” 谢谢大家! 问题是您希望“时间点”是一个限定属性,而不是您当前编写的语句的属性。让我通过考虑以下关于Q76(巴拉

我想查询所有具有P585属性(时间点)的维基百科文章。不幸的是,其中一些非常模糊,并且位于子属性下,如图中所示。我希望能够过滤这些日期,无论它们在什么属性下

查询:“?item p:P585/ps:P585?date.”只会在时间点是根类别的地方返回结果,并且无论我尝试什么,我都无法在某个地方获得所有包含“时间点”的文章。或者,如果不可能,至少我希望能够指定“重大事件/*/时间点”


谢谢大家!

问题是您希望“时间点”是一个限定属性,而不是您当前编写的语句的属性。让我通过考虑以下关于
Q76
(巴拉克·奥巴马)和
P26
(配偶)的问题来澄清我的意思:

ps:P26
告诉我们陈述的对象是谁,即米歇尔·奥巴马

注意:通常您会发现,对于每个
?a p:Px/ps:Px?b
,都有
?a wdt:Px?b
(这取决于声明的排名,例如,关于奥巴马出生地有两种声明,一种是夏威夷,另一种是肯尼亚,但只有列出夏威夷的声明排名高到足以保证与
wdt
直接关联)

但是,如果我们想找到关于该语句的限定属性(例如,奥巴马夫妇结婚的时间、地点等),那么我们需要一个不同的名称空间,在本例中是
pq
,其中“q”代表限定符

这与你的例子有什么关系? 在您的示例中,您要查找的“main”属性是“重大事件”,因此
P793
,限定符是
P585

因此,您的查询应该是这样的:

SELECT *
WHERE {
?subject p:P793 ?statement .
?statement pq:P585 ?date .
}
简言之:

SELECT *
WHERE {
?subject p:P793/pq:P585 ?date .
}
如果您对重大事件的对象更感兴趣(在您的示例中,这是“火箭发射”
Q797476
),那么您可以这样指定:

SELECT *
WHERE {
?subject p:P793 ?statement .
?statement pq:P585 ?date ;
           ps:P793 wd:Q797476 .
}

请注意名称空间和属性号所起的作用。

问题在于,您希望“时间点”成为符合条件的属性,而不是您当前编写的语句的属性。让我通过考虑以下有关
Q76
(巴拉克·奥巴马)和
P26
(配偶)的查询来澄清我的意思:

ps:P26
告诉我们陈述的对象是谁,即米歇尔·奥巴马

注意:通常您会发现,对于每个
?a p:Px/ps:Px?b
,都有
?a wdt:Px?b
(这取决于声明的排名,例如,关于奥巴马出生地有两种声明,一种是夏威夷,另一种是肯尼亚,但只有列出夏威夷的声明排名高到足以保证与
wdt
直接关联)

但是,如果我们想找到关于该语句的限定属性(例如,奥巴马夫妇结婚的时间、地点等),那么我们需要一个不同的名称空间,在本例中是
pq
,其中“q”代表限定符

这与你的例子有什么关系? 在您的示例中,您要查找的“main”属性是“重大事件”,因此
P793
,限定符是
P585

因此,您的查询应该是这样的:

SELECT *
WHERE {
?subject p:P793 ?statement .
?statement pq:P585 ?date .
}
简言之:

SELECT *
WHERE {
?subject p:P793/pq:P585 ?date .
}
如果您对重大事件的对象更感兴趣(在您的示例中,这是“火箭发射”
Q797476
),那么您可以这样指定:

SELECT *
WHERE {
?subject p:P793 ?statement .
?statement pq:P585 ?date ;
           ps:P793 wd:Q797476 .
}

请注意名称空间和属性号所起的作用。

非常感谢您的详细解释,这很有帮助!非常感谢您的详细解释,这很有帮助!