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')
}
为什么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')
}