我使用端点http://dbpedia.org/sparql在给定类别的情况下查询dbpedia的“skos:wider”属性。我从http://dbpedia.org/page/Andreessen_Horowitz中取出了类别来进行查询。我不确定在以下查询中我做错了什么:
一个。我遇到了这个语法错误。我怎么逃避“,”?
prefix category: <http://dbpedia.org/resource/Category:>
select ?value where {
category:Companies_based_in_Menlo_Park,_California skos:broader ?value
}
湾我用这个得到了空洞的结果。但是如果我用“category:American_venture_capital_firms”替换URI,那么我得到了结果(使用正确的前缀声明)。
select ?value where {
<http://dbpedia.org/page/Category:American_venture_capital_firms> skos:broader ?value
}
答案 0 :(得分:4)
关于a点,您可以通过在前面添加反斜杠来转义SPARQL 1.1前缀名称中的字符:
category:Companies_based_in_Menlo_Park\,_California
但遗憾的是,这在DBPedia端点上不起作用,因为它的SPARQL引擎并不完全符合SPARQL 1.1标准。解决方法是使用完整的IRI而不是带前缀的名称,通过&#39;扩展&#39;前缀:
select ?value where {
<http://dbpedia.org/resource/Category:Companies_based_in_Menlo_Park,_California> skos:broader ?value
}
关于b点:由于您使用了错误的URI,该查询未给出结果。你有&#39; ... dbpedia.org/page/Category:...'在您的查询中,它应该是&#39; ... dbpedia.org/resource/Category:...'。
带有/ page /的DBPedia URI是HTML信息页关于资源,而带有/ resource /的URI是资源本身的实际标识符。后者是始终使用SPARQL查询的内容。