首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SPARQL自旋规则声明中使用构造/位置

如何在SPARQL自旋规则声明中使用构造/位置
EN

Stack Overflow用户
提问于 2014-08-17 15:08:59
回答 1查看 1.3K关注 0票数 1

摘要

预先感谢您帮助我编写一个构造/WHERE语句,该语句可以在TopBraid Composer免费版中声明为SPIN规则并使用。

我试图在spin:rule声明中嵌入SPARQL构造/WHERE语句,然后执行它。我将对下面的陈述1或2返回零推论。我使用的是Java7、Eclipse4.3和TopBraid Composer免费版。我已经成功地将语句3作为类形式的声明运行(说明3)。我在SPARQL查询编辑器(解释器)中成功地运行了语句4,我已经交叉发布到用户论坛。

详细信息

事实1:我还没有能够运行语句1作为一个旋转规则。

--报表1

代码语言:javascript
复制
CONSTRUCT {
?this owl:hasKey ?x .
}
WHERE {
BIND (spif:generateUUID() AS ?x) .
}

事实2:我还没有能够运行声明2作为一个旋转规则。

-报表2

代码语言:javascript
复制
CONSTRUCT {
?this owl:hasKey ?x .
}
WHERE {
?this rdfs:subClassOf node:entity .
BIND (spif:generateUUID() AS ?x) .
}
--No Error Message--

事实3:但是,我在类表单的构造函数字段中成功地使用了语句3。

-报表3

代码语言:javascript
复制
CONSTRUCT {
?this owl:hasKey ?x .
}
WHERE {
BIND (spif:generateUUID() AS ?x) .
}
Success: When a new instance is created a new triple indicating a key is created.

事实4:我在类似的SPARQL查询编辑器中成功地使用了语句4。

-报表4

代码语言:javascript
复制
CONSTRUCT {
?s owl:hasKey ?x .
}
WHERE {
?s rdf:type node:word_use
BIND (spif:generateUUID() AS ?x) .
}
Success: When statement is run all current instances get keys.

事实5:我没有在Ontology表单中检查任何SPARQL规则库。

事实6:我导入了以下两个库。

代码语言:javascript
复制
<http://spinrdf.org/spin> from local file TopBraid/SPIN/spin.ttl.
<http://spinrdf.org/sp> from local file TopBraid/SPIN/sp.ttl

事实7:文件中的命名空间是:

代码语言:javascript
复制
Base URI (Location) - http://example.org/
Default Namespace - http://example.org/

But the Base URI keeps getting reset to:
http://www.semanticweb.org/owl/owlapi/turtle

ace_lexicon - http://attempto.ifi.uzh.ch/ace_lexicon#
arc - http://example.org/arc#
arg - http://spinrdf.org/arg#
concept - http://example.org/concept#
node - http://www.example.org/node#
owl - http://www.w3.org/2002/07/owl#
rdf - http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs - http://www.w3.org/2001/01/rdf-schema#
skos - http://www.w3.org/2004/02/skos/core#
sp - http://spinrdf.org/sp#
spif - http://spinrdf.org/spif#
spin - http://spinrdf.org/spin#
spl - http://spinrdf.org/spl#
word_sense - http://example.org/word_sense#
word_term - http://example.org/word_term#
word_use - http://example.org/word_use#

事实8:我使用的类有以下断言。

代码语言:javascript
复制
Name - node:unclassified_concept
SubClassOf - node:entity

事实9: node:unclassified_concept类的一个实例描述如下。

代码语言:javascript
复制
URI - http://example.org/concept#regardless_of1
rdfs:comment - without attention to
rdfs:isDefinedBy - <http://en.wiktionary.org/wiki/regardless_of>
rdfs:label - regardless of

事实10:我成功地使用了耶拿通用规则推理以及OWL_MEM_RULE_INF OntModelSpec、读写、基本模型、inf模型和ont模型。

上下文

我的问题的背景如下。我正在构建并迭代执行一个本体和规则集,使用Java和Jena来证明OWL/RDF表示、考虑和响应非平凡类型书面英语的概念。我所用的句子是非琐碎的(41个词,3个分句等).当不违背任何OWL/RDF规则(传递性等)时,当前本体有1422个断言。在可能的情况下,我使用TopBraid编写器来补充Jena编程,以确保我符合约定和标准。

EN

回答 1

Stack Overflow用户

发布于 2014-08-20 16:53:01

这篇文章概述了我发布的问题的解决方案。我能够通过一个回应他们的用户论坛的人来解决这个问题。https://groups.google.com/forum/#!forum/topbraid-users

我想运行的构造/WHERE语句(修订后)是:

代码语言:javascript
复制
CONSTRUCT {
?this owl:hasKey ?x .
}
WHERE {
?this rdf:type node:unclassified_concept .
BIND (spif:generateUUID() AS ?x) .
}

但是,如果我将这个语句放在TBC中类表单的spin:rule字段中,然后按下图标进行推理,我将不会收到任何推论,而推理者将花费大量的时间来搅动。

解决方案是创建spin:rule的子属性,其中有spin:rulePropertyMaxIterationCount设置为1(以避免运行内置函数生成的无限循环--在我的例子中是spin:generateUUID())。

然后,我需要“拉”或将新的子属性(我将其命名为"runOnce")放入类表单中,以创建一个依赖于--内置的构造/其中的规则。

最后,在类表单中,我需要选择在新的子属性RunOnce上添加空白行,然后在那里输入原始构造/WHERE语句。

然后我进行推理,全班都使用了这个规则。

简而言之,如果您想将规则嵌入到TBC中的类中,并且该规则使用内置函数,则需要

代码语言:javascript
复制
-Create a subproperty of spin:rule that has rulePropertyMaxIterationCount 
   set to 1.
-Include this subproperty in the classes form.
-Embed your CONSTRUCT/WHERE statement that uses the built-in within that 
   subproperty on the classes form by selecting insert blank line and 
   copying/pasting it       in there.

注意,TBC支持的自旋内置函数比我认为的SPIN文档中的集合要小。TBC支持内置的列表在TBC产品中。

代码语言:javascript
复制
Help>
  Help Contents>
    TopBraid Composer>
      Application Development Tools>
        SPARQL Motion Scripts>
          SPARQL Motion Functions Reference

希望这能帮上忙。

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

https://stackoverflow.com/questions/25350466

复制
相关文章

相似问题

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