SPARQL查询不在类指定后推理属性

时间:2015-05-14 00:08:20

标签: sparql semantic-web dbpedia linked-data

我在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页面时,我的查询没有结果。当我指定某些东西是脊髓灰质炎疫苗时,它不应该自动继承疫苗指定的属性吗?我需要改变什么?

1 个答案:

答案 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
}

SPARQL results