0

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

4

1 回答 1

2

在您的原始查询中,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
}

SPARQL 结果

于 2015-05-14T12:12:58.637 回答