Обновление базы значений свойств типа данных по правилам SWRL
Привет
я сделал онтологию в Protege 4.3 для пользователей, предположим, 1 из моего подкласса онтологий класса user:
1- "Интерес" и класс "интерес" имеют подклассы: "onlineGaming","onlineMovie","онлайн-шопинг",... и каждый подкласс имеет индивидуальный: ежедневный, OnceAweek, OnceAmonth)
и у меня есть 3 свойства типа данных для каждого пользователя: (internetspeed,internetTraffic,Price)
данные, собранные на основе вопросника
мне просто нужно из этой онтологии сделать вывод, насколько важны эти 3 свойства типа данных для пользователей интернета.
Мне нужно сделать некоторые правила SWRL в Protege, чтобы определить вес интересов пользователя, например, если пользователь каждый день делает OnlineMovie, добавляя +3 к свойству internetTraffic.
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?
и мой второй вопрос: как я могу получить значение этого свойства типа 3 для каждого пользователя в sparql и сохранить результат?
Спасибо за вашу помощь
1 ответ
Прежде всего; Непонятно, чем вы занимаетесь, какие технологии используете и т. д. Более того, концептуальная концепция, которую вы разработали, не кажется здравой. Вы уверены, что это лучший способ представить информацию, которую вы хотите? Например, почему бы UserInterest
быть subClassOf User
? Я думаю, что вы имеете в виду, что UserInterest
а также UserInterestRate
диапазоны для свойства объекта, которые соединяются User
им, т. е. hasInterest rdfs:domain User
а также hasInterest rdfs:range UserInterest
,
Что касается ваших вопросов, вы используете Protege? Если вы используете его, вы можете реализовать эти правила SWRL, используя вкладку SWRL в Protege.
После того, как вы правильно это реализовали, вы можете просто использовать некоторый SPARQL-запрос, подобный следующему:
select ?user ?r1 ?r2 ?r3 Where {
?user rdf:type yourNamespacePrefix:User.
?user yourNamespacePrefix:rate1 ?r1.
?user yourNamespacePrefix:rate2 ?r2.
?user yourNamespacePrefix:rate3 ?r3.
}