嗨我已经为用户制作了一个本体论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数据类型属性的值并保存结果?
感谢您的帮助
答案 0 :(得分:2)
首先;目前尚不清楚您在做什么/使用哪种技术等,请考虑澄清您的问题。而且,你开发的概念似乎并不合理。您确定这是表示您想要的信息的最佳方式吗?例如,为什么UserInterest
会成为subClassOf User
?我认为您的意思是UserInterest
和UserInterestRate
是将User
连接到它们的对象属性的范围,即hasInterest rdfs:domain User
和hasInterest 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.
}