我在芝麻三联商店有一些关于疫苗的数据。在同一家商店,我从DBpedia添加了有关疫苗的其他数据。
<http://dbpedia.org/resource/Rotavirus_vaccine>
dbpedia2:routesOfAdministration "oral"@en
要指定我的原生数据中的特定疫苗与来自DBpedia的导入数据的主题是同一个实体,我插入了一个连接这两个实体的owl:sameAs语句。
my_ns:Rota owl:sameAs <http://dbpedia.org/resource/Rotavirus_vaccine> .
虽然添加了单个三元组,但我找不到其他推理。例如,我希望这个查询通过在DBpedia中推断疫苗实体的属性,在我的原生数据中给出疫苗的管理途径:
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX my_ns: <http://purl.org/net/ontology/my_ns/>
select ?roa where
{my_ns:Rota dbpedia2:routesOfAdministration ?roa}
目前,执行查询并不会产生任何结果。我希望系统推断以下内容作为上述查询的输出:
my_ns:Rota dbpedia2:routesOfAdministration "oral"@en .
我通过替换war文件安装了GraphDB-Lite(OWLIM),并通过在DBpedia上执行查询来验证owl:sameAs的工作原理。
答案 0 :(得分:1)
Sesame内存和本机商店不支持开箱即用的OWL推理。它们提供(可选)支持RDFS推理(因此理解rdfs:subClassOf
等),这可以在创建存储库时启用(在工作台中,这是下拉选项'Memory / Native Store RDF Schema')。但是,owl:sameAs
当然不是RDFS推理的一部分。
Sesame还支持在内存或本机商店之上的自定义图形查询推理器。此自定义推理器可以使用您自己的推理规则进行配置,该规则是两个SPARQL CONSTRUCT
查询的组合:表示实际推理规则的“规则”查询,以及用于执行维护的“匹配”查询更新商店时的推断语句。关于如何设置它的更多解释可以在Programming with Sesame中的存储库创建一节中找到。 Workbench中的选项是“内存/本机存储自定义图形查询推断”。
对于owl:sameAs
,支持它的自定义规则大致如下:
CONSTRUCT { ?s1 ?p1 ?o1 . ?o1 ?p2 ?o3 }
WHERE {
?o1 owl:sameAs ?o2 .
OPTIONAL { ?s1 ?p1 ?o2 . }
OPTIONAL { ?o2 ?p2 ?o3 . }
}
如果您的目标纯粹是owl:sameAs
推理,那么这可能是启用它的简单方法。但是,对于更全面的OWL推理支持,自定义推理器功能不够强大或不具备可扩展性。相反,您应该使用内置支持它的Sesame后端存储,例如Ontotext GraphDB(以前称为OWLIM)。
答案 1 :(得分:1)
解决了这个问题。问题是没有GraphDB-Lite(以前的OWLIM-Lite)。通过替换.war文件,我得到了安装的印象。但是,在创建新存储库时,下拉列表中缺少OWLIM-Lite选项表明它尚未安装。
当我最初检查owl:sameAs查询在哪里工作时,我使用SPARQL中的SERVICE子句来查询DBpedia。当我查询DBpedia(支持owl:sameAs)时,查询正在执行,因为我实际上是在芝麻之外查询。
我通过在Tomcat中删除旧的.war文件及其相应的文件夹,并从GraphDB分发中复制.war文件来解决了这个问题。复制文件后第一次运行服务器时,会自动生成相应的文件夹(openrdf-sesame和openrdf-workbench)。在创建存储库时,可以使用OWLIM-Lite选项。
我创建了一个OWLIM-Lite存储库并在那里添加了三元组。 owl:sameAs推理随后开始工作,问题中的查询已成功执行。