根据SWRL规则更新数据类型属性值

时间:2017-06-05 10:22:17

标签: sparql ontology swrl

嗨我已经为用户制作了一个本体论4.3,假设我的类本用户的本体子类中有一个是:

 1-“兴趣”和类“兴趣”有子类:“onlineGaming”,“onlineMovie”,“onlineshoping”,......每个子类都有个体:每天,每周一次,一次激活)

我为每个用户提供3种数据类型属性:( internetspeed,internetTraffic,Price)

根据问卷收集的数据
我只需要从这个本体论推断这3个数据类型属性因子对于互联网用户有多重要 我需要制定一些SWRL规则,以便推断用户的兴趣权重,例如,如果用户每天在线工作,则会在互联网流量数据表中添加+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数据类型属性的值并保存结果?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

首先;目前尚不清楚您在做什么/使用哪种技术等,请考虑澄清您的问题。而且,你开发的概念似乎并不合理。您确定这是表示您想要的信息的最佳方式吗?例如,为什么UserInterest会成为subClassOf User?我认为您的意思是UserInterestUserInterestRate是将User连接到它们的对象属性的范围,即hasInterest rdfs:domain UserhasInterest rdfs:range UserInterest

回答你的问题,你使用Protege吗?如果您使用它,则可以使用SWRL tab in 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.   
}