例如,在此站点上,执行第一个SPARQL查询并创建非常相似的内容:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE {
?name p:name <http://dbpedia.org/resource/Olivier_Theyskens> .
}
Run Code Online (Sandbox Code Playgroud)
尝试执行它:这里
我没有结果.但是,请将查询修改为以下内容:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE {
?name p:name ?otherthing.
}
Run Code Online (Sandbox Code Playgroud)
我得到了结果,即使它们不是我想要的结果.
为什么第一个查询不起作用 - 我做错了什么?:/
在这种情况下,我认为这是因为您向后订购了查询语句.
DBpedia资源(<http://dbpedia.org/resource/Olivier_Theyskens>)是Entity或Subject(?s),property(p:name)是Attribute或Predicate(?p),该property(?name)的值是Value或Object(?o).
SPARQL期望所有语句都是{ ?s ?p ?o },但是你的语句似乎写成{ ?o ?p ?s }......
总结一下,如果你试试这个查询 -
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE
{
<http://dbpedia.org/resource/Olivier_Theyskens> p:name ?name .
}
Run Code Online (Sandbox Code Playgroud)
- 你会得到我认为你想要的结果.