我在芝麻三联商店里有一些关于疫苗的数据 . 在同一家商店,我从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的工作原理 .
2 回答
Sesame内存和本机商店不支持开箱即用的OWL推理 . 它们提供(可选)支持RDFS推理(因此理解
rdfs:subClassOf
等),可以在创建存储库时启用(在工作台中,这是下拉选项'Memory/Native Store RDF Schema') . 但是,owl:sameAs
当然不是RDFS推理的一部分 .Sesame还支持在内存或本机存储之上的自定义图形查询推理器 . 此自定义推理器可以使用您自己的推理规则进行配置,该规则是两个SPARQL
CONSTRUCT
查询的组合:表示实际推理规则的'rule'查询,以及用于在存储为时对推断语句进行维护的'match'查询更新 . 关于如何设置它的更多解释可以在Programming with Sesame中的存储库创建一节中找到 . Workbench中的选项是"Memory/Native store Custom Graph Query Inference" .在
owl:sameAs
的情况下,支持它的自定义规则看起来大致如下:如果你的目标纯粹是为了推理,那么这可能是启用它的一种简单方法 . 但是,对于更全面的OWL推理支持,自定义推理器功能不够强大或不具备可扩展性 . 相反,您应该使用内置支持它的Sesame后端存储,例如Ontotext GraphDB(以前称为OWLIM) .
解决了这个问题 . 问题是没有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推理随后开始工作,问题中的查询已成功执行 .