Sparql 基于SWRL规则更新数据类型属性值

Sparql 基于SWRL规则更新数据类型属性值,sparql,ontology,swrl,Sparql,Ontology,Swrl,您好我在protege 4.3中为用户创建了一个本体,假设我的user类的本体子类中有1个是: 1-“兴趣”和“兴趣”类有子类:“在线游戏”、“在线电影”、“在线购物”,。。。每个子类都有各自的属性:每日、每周一周、每周一个月) 对于每个用户,我有3个数据类型属性:(internetspeed、internetTraffic、Price) 根据调查问卷收集的数据 我只需要从这个本体中推断这3个数据类型属性因素对互联网用户有多重要 我需要在protege中制定一些SWRL规则来推断用户的兴趣权重,

您好
我在protege 4.3中为用户创建了一个本体,假设我的user类的本体子类中有1个是:

1-“兴趣”和“兴趣”类有子类:“在线游戏”、“在线电影”、“在线购物”,。。。每个子类都有各自的属性:每日、每周一周、每周一个月)

对于每个用户,我有3个数据类型属性:(internetspeed、internetTraffic、Price)

根据调查问卷收集的数据
我只需要从这个本体中推断这3个数据类型属性因素对互联网用户有多重要
我需要在protege中制定一些SWRL规则来推断用户的兴趣权重,例如,如果用户每天都做onlineMovie,则向internetTraffic dataproperty添加+3

user(?u) ^ hasOnlineMovieInterest(?u , everyday)-> add +3 to user(?u,InternetTraffic)
user(?u) ^ hasOnlineGamingInterest(?u , OnceAweek) and hasOnlineMovieInterest(?u , everyday)-> add +2 to user(?u,internetSpeed)
我应该如何在SWRL规则中正确地写入此内容?
我的第二个问题是,如何为sparql中的每个用户获取这个3数据类型属性的值并保存结果


首先感谢您的帮助

;不清楚你在做什么/使用什么技术等等,请考虑清楚你的问题。此外,你提出的概念似乎并不合理。您确定这是表示所需信息的最佳方式吗?例如,为什么
UserInterest
会是User的
子类?我想你的意思是
UserInterest
UserInterestRate
是连接
User
到它们的对象属性的范围,即
hasInterest rdfs:domain User
hasInterest rdfs:range UserInterest

说到你的问题,你用Protege吗?如果您使用它,您可以使用实现这些SWRL规则

正确实现后,您可以简单地使用一些SPARQL查询,类似于:

select ?user ?r1 ?r2 ?r3 Where {
    ?user rdf:type yourNamespacePrefix:User.
    ?user yourNamespacePrefix:rate1 ?r1.   
    ?user yourNamespacePrefix:rate2 ?r2.   
    ?user yourNamespacePrefix:rate3 ?r3.   
}

你的整个造型真糟糕!类
userInterest
User
的子类。真正地你知道这意味着每个
userInterest
都是用户吗?而
userInterest
包含像
daily
这样的个体-这意味着
daily
userInterest
。真的吗?还有一个类
userInterestRate
(又是出于什么原因,作为user的子类)“具有3个数据类型属性”。“带”是什么意思?一个类没有属性。如果你用形式语法展示本体论会更好,最好用曼彻斯特OWL语法。您的规则示例显示了一些属性,但没有人知道它们的定义,如果还有其他属性的话。@AKSW谢谢您的回复我在设计本体时犯了一些大错误我试图更改它,请您再次检查我的问题谢谢您的帮助。谢谢您的回复我只是对我的问题做了一些更改