DBPedia SPARQL查询应返回结果,但为空

DBPedia SPARQL查询应返回结果,但为空,sparql,dbpedia,Sparql,Dbpedia,我想获取所有具有指定类别和指定键的页面。我的问题是: PREFIX dbpedia: <http://dbpedia.org/> PREFIX dbpedia2: <http://dbpedia.org/property/> PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dcterms: <http://dublincore.org/2010/10/11/dcterms.rdf#&g

我想获取所有具有指定类别和指定键的页面。我的问题是:

PREFIX dbpedia: <http://dbpedia.org/>
PREFIX dbpedia2: <http://dbpedia.org/property/> 
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dcterms: <http://dublincore.org/2010/10/11/dcterms.rdf#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX grs: <http://www.georss.org/georss/point>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?page ?cat ?key ?value (lang(?value) as ?language) WHERE {

  ?page dcterms:subject ?cat .
  ?page ?key ?value .

  FILTER(
    regex(?cat, "category:Amusement_parks_in_the_Netherlands") &&
    ?key = foaf:depiction
  )

}
前缀dbpedia: 前缀db2: 前缀dbpedia owl: 前缀dcterms: 前缀foaf: 前缀geo: 前缀grs: 前缀rdf: 前缀rdfs: 选择page cat键值(语言(?值)作为语言),其中{ ?第dcterms页:主题?类别。 ?页面?键?值。 滤器( regex(?cat,“类别:荷兰的游乐园”)&& ?键=foaf:描述 ) } 但它返回的结果为零。请看这里:

它至少应该返回此页面:(因为它符合条件)


有什么想法吗?

您的查询有两个问题。首先,在比较URI时不要使用正则表达式。而不是:

regex(?cat, "category:Amusement_parks_in_the_Netherlands")
使用:

?cat=

第二:都柏林核心的名称空间前缀似乎是错误的。您正在查询属性
dcterms:subject
,在查询中,前缀
dcterms
映射到命名空间
http://dublincore.org/2010/10/11/dcterms.rdf#
。但是,DBPedia中的实际属性是
http://purl.org/dc/terms/subject
,因此名称空间前缀应映射到
http://purl.org/dc/terms/
取而代之。

谢谢。是吗?猫=。。。当?cat有多个值时,表达式也起作用?每个页面可以有多个类别。@Alp,是的,查询模式将匹配至少一个类别具有该特定值的任何页面。
?cat = <http://dbpedia.org/resource/category:Amusement_parks_in_the_Netherlands>