首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在GenericRuleReasoner的数据模拟规则中使用空白节点?

如何在GenericRuleReasoner的数据模拟规则中使用空白节点?
EN

Stack Overflow用户
提问于 2014-07-07 13:16:13
回答 1查看 327关注 0票数 0

我正在使用GenericRuleReasoner来推断本体中的虚拟事实。GenericRuleReasoner将推理规则作为输入中的数据模拟规则,在耶拿推理支持中进行解释。下面是附加到泛型推理器的DatalogRule示例:

代码语言:javascript
运行
复制
String rules = "[r1: (?e1 st:runningTask st:gic_eth0) -> (?e1 rdf:type st:dataFromEthernet2IP)]";
Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
reasoner.setDerivationLogging(true);
InfModel inf = ModelFactory.createInfModel(reasoner, rawData);

当我在我的数据上测试这段代码时,它工作得很好,并推断出了2000多个虚拟事实。但是,当我更改Datalog规则以创建这样的空白节点时

代码语言:javascript
运行
复制
String rules = "[r1: (?e1 st:runningTask st:gic_eth0) -> (_:p rdf:type st:dataFromEthernet2IP)]";

我只得到了推断的虚拟事实。

GenericRuleReasoner的数据模拟规则中的空白节点表示有问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-07 15:52:53

GenericRuleReasoner的数据模拟规则中的空白节点表示有问题吗?

是。在耶拿规则中,您不使用这样的空节点。链接到的文档包含一个规则语法,其中没有任何东西允许像_:p这样的节点。Jena规则中节点的语法是:

代码语言:javascript
运行
复制
node      :=   uri-ref               // e.g. http://foo.com/eg
          or   prefix:localname      // e.g. rdf:type
          or   <uri-ref>             // e.g. <myscheme:myuri>
          or   ?varname              // variable
          or   'a literal'           // a plain string literal
          or   'lex'^^typeURI        // a typed literal, xsd:* type names support

如果要创建新的空白节点,请使用规则正文中的丁香素?x绑定到新的空白节点。例如,

代码语言:javascript
运行
复制
[r1: (?e1 st:runningTask st:gic_eth0), makeTemp(?p)
     ->
     (?p rdf:type st:dataFromEthernet2IP) ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24611512

复制
相关文章

相似问题

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