首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SWRL和Virtuoso

SWRL和Virtuoso
EN

Stack Overflow用户
提问于 2015-02-12 10:48:59
回答 1查看 495关注 0票数 1

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

代码语言:javascript
运行
复制
Product(?P),hasName(?P,?N),inGroupB(?P,?B)->hasBug(?P)

我将我的RDF数据(~3 3GB)和Ontology模式一起上传到Virtuoso服务器。我尝试调用应该根据本体中的规则进行推断的数据,但查询返回空结果。SPARQL查询示例,它应该清楚地从上面的规则中返回推断的关系,如下所示:

代码语言:javascript
运行
复制
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查询。关于如何让推理部分正常工作,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-17 04:42:13

Virtuoso 7.x不支持SWRL。

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

请参阅Creating Custom Inference Rules using the SPIN Vocabulary and Virtuoso 8.0,了解其中的一个步骤。

上面的粗略SWRL大致翻译为--

代码语言:javascript
运行
复制
CONSTRUCT { ?P <hasBug> ?B }
WHERE
  {
    ?P  a           <Product> ;
        <hasName>   ?N ;
        <inGroupB>  ?B .    
  }

-或者--

代码语言:javascript
运行
复制
CONSTRUCT { ?P a <BuggyProduct> }
WHERE 
  {
    ?P  a           <Product> ;
        <hasName>   ?N ;
        <inGroupB>  ?B .    
  }

一旦您有了SPARQL CONSTRUCT,创建自定义推理规则就可以归结为几个步骤:

使用SPIN terms

  • EXEC ('SPARQL ' || SPARQL_SPIN_GRAPH_TO_DEFSPIN('{turtle-doc-with-rule-description-iri'))

  • Test

描述您的规则(在海龟文档中包含一组RDF语句)

更完整的用户文档正在编写中;您可以通过Virtuoso Users mailing listOpenLink Support Case System获得帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28468426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档