SPARQL 查询 returns 无数据

SPARQL query returns no data

为什么this SPARQL query return no data

 PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
 PREFIX dbpedia: <http://dbpedia.org/resource/>

SELECT *
WHERE { 
    <http://dbpedia.org/resource/Louis,_Prince_of_Condé_(1530–1569)> dbpedia-owl:abstract ?abstract            
}
LIMIT 1

如果你看the DBpedia page,说明此人有摘要。是不是和URL里面的括号有关?如果是这样,我该如何解决这个问题?

这个 URI 不会导致与 DBpedia 页面相同的结果 - 无论出于何种原因。你可以用

看到这个
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
SELECT *
WHERE { 
    <http://dbpedia.org/resource/Louis,_Prince_of_Condé_(1530–1569)> ?p ?o          
}
LIMIT 100

但它与 owl:sameAs 有关系 http://dbpedia.org/resource/Louis,_Prince_of_Cond%C3%A9_(1530%E2%80%931569)

这意味着如果您在查询中使用此 URI,它应该会按预期工作。但是你确实应该在语言上应用 FILTER,例如'en' 英文摘要。

它没有 dbpedia-owl:abstract 谓词。如果列出其谓词,您会发现以下属性:

http://www.w3.org/2002/07/owl#sameAs
http://xmlns.com/foaf/0.1/name
http://purl.org/dc/elements/1.1/description
http://dbpedia.org/ontology/alias
http://dbpedia.org/ontology/birthYear
http://dbpedia.org/ontology/deathYear
http://dbpedia.org/ontology/viafId
http://dbpedia.org/ontology/deathPlace
http://dbpedia.org/ontology/deathDate
http://dbpedia.org/ontology/birthPlace
http://dbpedia.org/ontology/birthDate

正如 AKSW 提到的,该资源实际上没有很多属性,但通过 owl:sameAs link 连接到 "canonical" 版本。你可以继续使用你现在正在使用的 IRI,在任一方向上跟随 owl:sameAs 到它的任何相等资源(我们称它们为 ?s),然后请求 ?s 的摘要。 (然后按语言过滤不是一个坏主意,如果适用的话。)您可以使用这样的查询来执行此操作(请注意,当前的 DBpedia 端点使用 dbo:,现在,不是旧的 dbpedia-owl:):

select ?abstract where {
   <http://dbpedia.org/resource/Louis,_Prince_of_Condé_(1530–1569)> (owl:sameAs|^owl:sameAs)* ?s .
   ?s dbo:abstract ?abstract .

  filter langMatches(lang(?abstract),'en')
}