[英]SPARQL query not inferencing properties after class specified
我正在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页面尝试时,此查询没有任何结果。 当我指定某种东西是小儿麻痹症疫苗时,它不应该自动继承为疫苗指定的特性吗? 我需要更改什么?
在原始查询中, ex:vaccine是URI节点,是<http://www.example.org/rdf#vaccine>的缩写。 这是非常不可能的DBpedia中包含有关它的任何信息。 尽管DBpedia端点可能(或可能不)包含从DBpedia数据中可以推断出的信息,但它不会将SPARQL查询视为部分断言和部分查询。
您的意思是说:“查找?roa的值,以使?roa是ex:vaccine的管理途径,而ex:vaccine是dbp:Polio_vaccine的实例”。 ex:vaccine虽然是一个常数 ,所以有点像说:“找到10的因子,顺便说一下,10是3和4的总和。” 但是,“ 10是3和4的和”并不在数据中,因此即使记录了10的因数,也不会有任何匹配。最重要的是, dbp:Polio_vaccine是DBpedia不是类,因此不会有任何实例。
相反,您想询问单个dbpedia:Polio_vaccine的dbpprop:routesOfAdministation属性的任何值。 您在这里需要的查询是(我使用的是在公共端点http://dbpedia.org/sparql定义的前缀):
select ?routes where {
dbpedia:Polio_vaccine dbpprop:routesOfAdministration ?routes
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.