-2


,我在 protege 4.3 中为 users 制作了一个本体,假设我的类 user 的本体子类中的 1 个是:

1-“Interest”,而“interest”类有子类:“onlineGaming”、“onlineMovie”、“onlineshoping”。 ..每个子类都有个人:每天,每周一次,每月一次)

,并且我为每个用户都有3个数据类型属性:(互联网速度,互联网流量,价格)

基于问卷收集的数据
我只需要从这个本体推断这3个数据类型的重要性属性因素是针对互联网用户的,
我需要在 protege 中制定一些 SWRL 规则来推断用户兴趣权重,例如,如果用户每天都做 onlineMovie,则为 internetTraffic 数据属性添加 +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 个数据类型属性的值并保存结果?

谢谢你的帮助

4

1 回答 1

2

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

回答您的问题,您使用 Protege 吗?如果您使用它,您可以使用Protege中的SWRL 选项卡来实施这些 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.   
}
于 2017-06-05T11:53:24.417 回答