我在SPARQL上运行测试查询来测试推理。我的查询如下:
PREFIX eem: <http://purl.org/eem#>
PREFIX ns: <http://purl.org/net/ns/>
PREFIX sc_data: <http://purl.org/net/ns/sc_data/>
PREFIX dbp: <http://dbpedia.org/resource/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX ex: <http://www.example.org/rdf#>
SELECT ?roa
WHERE {
SERVICE <http://dbpedia.org/sparql>{
ex:vaccine a dbp:Polio_vaccine.
ex:vaccine dbpprop:routesOfAdministration ?roa.
}
}
尝试snorql页面时,我的查询没有结果。当我指定某些东西是脊髓灰质炎疫苗时,它不应该自动继承疫苗指定的属性吗?我需要改变什么?
答案 0 :(得分:2)
在原始查询中, ex:vaccine 是一个URI节点,是&lt; http://www.example.org/rdf#vaccine> 的缩写。 DBpedia不太可能非常包含有关它的任何信息。虽然DBpedia端点可能(或可能不)包含可从DBpedia数据中推断的信息,但它并不将您的SPARQL查询视为部分断言和部分查询。
你真的在说&#34;找到?roa的值,以便?roa是ex:疫苗和ex的管理途径:疫苗是dbp:Polio_vaccine&#34;的实例。 ex:疫苗虽然是常量,所以它有点像说,&#34;找到10的因子,顺便说一下,10是总和3和4。&#34; &#34; 10是3和4&#34;的总和。但是,数据并不存在,所以即使记录的因子为10,也不会有任何匹配。最重要的是,dbp:Polio_vaccine是DBpedia中的个体,而不是类,所以不会有它的任何实例。
相反,您想要为个人 dbpedia:Polio_vaccine 询问 dbpprop:routesOfAdministation 属性的任何值。您需要的查询是(我使用http://dbpedia.org/sparql定义的前缀,即公共端点):
select ?routes where {
dbpedia:Polio_vaccine dbpprop:routesOfAdministration ?routes
}