gpt4 book ai didi

uri - 为什么我的 sparql 查询没有结果?

转载 作者:行者123 更新时间:2023-12-05 08:57:09 28 4
gpt4 key购买 nike

我对分组结果进行了 sparql 查询,并通过 SPARQL 端点执行查询 http://glam.iptime.org/sparql .

但是,我没有得到任何结果,也没有任何错误消息。

查询如下。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX cfo: <http://lod.culture.go.kr/ontology/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT ?age ?typeName (count(?s) as ?cnt)
WHERE {
{
select * where {
?s rdf:type cfo:CulturalObject.
?s rdfs:label ?label.
?s cfo:temporal ?time.
?time cfo:begin ?begin.

BIND (STRDT(replace(?begin, 'BC', '-'), xsd:float) as ?year).
BIND(IF(?year > 1897, "modern", IF(?year > 1392, "chosun", IF(?year > 918, "goryeo", IF(?year > 700, "north_south", IF(?year > -58, "three_states", "ancient"))))) as ?age).

?s dc:type ?type.
?type rdfs:label ?typeName.
}
}
FILTER(BOUND(?age)).
}
GROUP BY ?age ?typeName
LIMIT 100

我的 sparql 查询有问题吗?它有什么问题?

我认为 sparql 查询声明顺序是错误的。还有其他意见吗?

最佳答案

我不想为您做这些工作并通过您的查询到达终点,而是想告诉您如何解决这个问题。基本上迂腐地构建查询。从一个单一的三重模式开始。执行查询 - LIMIT 是你的 friend 。然后添加下一个三重模式。边走边试验结果。

所以第一个查询就是:

SELECT *
WHERE {
?s a cfo:CulturalObject.
} LIMIT 100

执行它,检查它是否得到结果。下一个查询是:

SELECT *
WHERE {
?s a cfo:CulturalObject.
?s rdfs:label ?label.
} LIMIT 100

假设这失败了——你得不到任何结果。所以也许他们使用 skos:prefLabel 代替。 SPARQL 是一种探索性很强的语言,因此您可以尝试以下方法:

SELECT *
WHERE {
?s a cfo:CulturalObject.
?s ?p ?o
} LIMIT 100

检查 ?p?o 的值以查看数据的实际结构。增加 LIMIT 以查看更多内容。使用结果构建下一个三重模式。

归根结底,这一切都是关于探索数据,与 OWL 或类似的查询语言不同,您几乎不需要了解数据就可以执行成功的查询。事实上,如你所知,以下查询将始终产生结果,除非数据存储为空:

SELECT ?s ?p ?o
WHERE {
?s ?p ?o .
} LIMIT 1000

如评论中所述,除非子选择是计算聚合,否则子选择几乎总是错误的。这是我经常看到的 SPARQL 反模式,我只能假设有一些示例不正确地使用子选择。只是需要注意的事情。

关于uri - 为什么我的 sparql 查询没有结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36192369/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com