Обновление базы значений свойств типа данных по правилам 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.   
}
Другие вопросы по тегам