繁体   English   中英

SWRL和Virtuoso

[英]SWRL and Virtuoso

我正在寻找一种明确的方法来在virtuoso服务器中清楚地使用SWRL。 例如,我使用Protege 4.3设计了一个本体,我使用Protege中的Rules选项卡编写了SWRL规则。

Product(?P),hasName(?P,?N),inGroupB(?P,?B)->hasBug(?P)

我将RDF数据(约3GB)以及本体架构上传到了Virtuoso服务器。 我试图回忆一下本应根据本体中的规则推断的数据,但查询返回空结果。 SPARQL查询的示例,它应该从上面的规则中明确返回推断的关系,如下所示:

DEFINE input:inference <http://example.com/2/owl>  
PREFIX e:<http://example.com/e/>
SELECT * 
FROM <http://example.com/2/data> 
WHERE 
 { 
     ?P a e:Product ; 
      e:hasBug ?B
 }

我相信在将事物集成在一起(RDF数据,OWL模式和SWRL规则)时遇到问题。 我使用Jena和Virtuoso Jena驱动程序来加载数据,本体并运行SPARQL查询。 关于如何让推理部分正常工作的任何建议?

Virtuoso 7.x不支持SWRL。

Virtuoso 8.x实现了可以翻译SWRL的SPIN,以及其他复杂的推理。

有关演练,请参阅使用SPIN词汇表和Virtuoso 8.0创建自定义推理规则

您的粗略SWRL大致翻译为 -

CONSTRUCT { ?P <hasBug> ?B }
WHERE
  {
    ?P  a           <Product> ;
        <hasName>   ?N ;
        <inGroupB>  ?B .    
  }

- 要么 -

CONSTRUCT { ?P a <BuggyProduct> }
WHERE 
  {
    ?P  a           <Product> ;
        <hasName>   ?N ;
        <inGroupB>  ?B .    
  }

拥有SPARQL CONSTRUCT ,制作自定义推理规则可以归结为几个步骤:

  1. 使用SPIN术语描述(使用Turtle doc中的RDF语句集合)您的规则
  2. EXEC ('SPARQL ' || SPARQL_SPIN_GRAPH_TO_DEFSPIN('{turtle-doc-with-rule-description-iri'))
  3. 测试你的规则

正在进行更完整的用户文档。 您可以通过Virtuoso用户邮件列表OpenLink支持案例系统获得帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM