首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用swrl:等于比较数据类型属性的值

使用swrl:等于比较数据类型属性的值
EN

Stack Overflow用户
提问于 2017-04-21 13:23:24
回答 1查看 1.7K关注 0票数 0

我正在构建一个由三个类组成的本体:

  1. 消息
  2. 火腿
  3. 垃圾邮件

2数据属性、域:消息和范围xsd:string:

  1. hasInterest
  2. hasCategory

2 SWRL规则:消息(?x),hasInterest(?x,?a),hasCategory(?x,?b),swrl:equal(?a,?b) ->Ham(?x)

消息(?X),hasInterest(?x,?a),hasCategory(?x,?b),swrl:notEqual(?a?b) ->Spam(?x)

我希望将类消息的实例分类为类垃圾邮件或哈姆;如果hasCategory值(消息类别)等于hasInterest值(用户兴趣),则该消息是Ham else垃圾邮件。

如果我有一个消息类别和一个兴趣对象: m1 hasInterests体育m1 hasCategory体育,这是正确的。

那么,如果我有一个迭代或类别列表(例如:每条消息有超过一个兴趣(体育,电影}),每个消息有超过一个类别{电影,政治}

我想说,如果这两个列表相交,那么消息就是ham,所以swrl:equal不起作用,我如何定义它来比较所有的个体?

我所做的是重复hasInterests和hasCategory,这取决于我所指的手动定义列表的各个值,它是否有效,还有另一种使用字符串列表的自动方法,以及如何在swrl中比较它们呢?

EN

回答 1

Stack Overflow用户

发布于 2018-03-08 10:21:26

SWRL内置的字符串(http://www.daml.org/rules/proposal/builtins.html)只支持简单的字符串函数。在您的模型中,您可以建模一个具有多个兴趣和许多类别的消息个体m1,如下所示:

代码语言:javascript
运行
复制
m1 hasInterests "sports", m1 hasInterests "movies" 
m1 hasCategory "sports", m1 m1 hasCategory "movies" 

在你的统治下

代码语言:javascript
运行
复制
Message(?x),hasInterest(?x,?a),hasCategory(?x,?b), swrl:equal(?a,?b) ->Ham(?x)

每条至少有一条兴趣等于一个类别的消息都将成为Ham

使用SQWRL查询,也许可以找到兴趣数量的有用提示:

代码语言:javascript
运行
复制
Message(?x) ^ hasInterest(?x,?a) → sqwrl:select(?x) ^ sqwrl:count(?a)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43543913

复制
相关文章

相似问题

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