芝麻不推理owl:sameAs

Sesame not inferencing owl:sameAs

我的 Sesame triplestore 中有一些关于疫苗的数据。在同一个商店中,我添加了来自 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 是否有效。

Sesame 内存和本机存储不支持开箱即用的 OWL 推理。他们确实提供(可选)对 RDFS 推理的支持(因此理解 rdfs:subClassOf 等),可以在存储库创建时启用(在 workbench 中,这是下拉选项 '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 的情况下,支持它的自定义规则大致如下所示:

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)。

问题解决了。问题是缺少 GraphDB-Lite(以前称为 OWLIM-Lite)。我的印象是我通过替换 .war 文件安装了它。但是,在创建新存储库时下拉菜单中没有 OWLIM-Lite 选项表明它尚未安装。

当我最初检查 owl:sameAs 查询在哪里工作时,我使用 SPARQL 中的 SERVICE 子句来查询 DBpedia。当我查询 DBpedia(支持 owl:sameAs)时,正在执行查询,因为我实际上是在 Sesame 之外查询。

我通过删除旧的 .war 文件及其在 Tomcat 中的相应文件夹并从 GraphDB 分发中复制 .war 文件解决了这个问题。当运行服务器第一次复制文件后,会自动生成相应的文件夹(openrdf-sesame和openrdf-workbench)。创建存储库时,OWLIM-Lite 选项可用。

我创建了一个 OWLIM-Lite 存储库并在其中添加了三元组。 owl:sameAs 推理随后开始工作,问题中的查询已成功执行。