Как классифицировать людей в классе по конкретному состоянию протеже?

У меня есть онтология, которая имеет:

  • Классовый агент и групповое действие
  • Список свойств данных (которые наследуют свойства ограничения свойств данных) имеет ОБЪЕДИНЕНИЕ домена (агент и действие) и примитив диапазона (пример hasMoney, hasTime)

Я хочу классифицировать всех лиц, у которых ag.hasTime >= ac.hasTime и ag.hasMoney >= ac.hasMoney и т. д., где ag — агент, а ac — экземпляры действия.

Я хочу сделать замечание, что эти условия имеют несколько вещей:

  • сравнение всегда выполняется между одним и тем же свойством ag.hasTime >= ac.hasTime
  • Все свойства dataProperty, наследующие свойство ограничения, будут обрабатываться одинаково.
  • Все агенты, удовлетворяющие этому условию, будут принадлежать, например, классу AgentRestrictions.

Я не хочу использовать SWRL, потому что я читал, что это не стандарт и что я всегда могу делать это со SPARQL.

Я думаю, с помощью SPARQL это можно сделать, но я не уверен, как это сделать. Но я предпочитаю решение, которое щелкает в протеже. Или уточнение с помощью аксиом.


person Pepita    schedule 13.05.2014    source источник
comment
Что касается ag.hasTime ›= ac.hasTime и ag.hasMoney ›= ac.hasMoney. Классифицировать индивида (в единственном числе) обычно означает отнести его к какому-то классу (или сделать вывод о членстве в классе). Что именно вы подразумеваете под классификацией пары людей? Вы хотите сделать вывод об отношениях между ними? Вы говорите, что хотите, чтобы все агенты, удовлетворяющие этому условию, относились, например, к классу AgentRestrictions, но тогда о каком действии вы говорите? Если время агента больше, чем время некоторого действия? Чем каждое действие? Какая?   -  person Joshua Taylor    schedule 13.05.2014
comment
Кроме того, SWRL является стандартом, хотя и не является рекомендацией W3C, которой являются многие стандарты. Он задокументирован по адресу w3.org/Submission/SWRL, и Protégé его поддерживает. Если вы используете ризонер, который поддерживает правила SWRL (например, Pellet, HermiT), вы можете ввести правила в Protégé, запустить ризонер и получить ожидаемые результаты. Использовать правила SWRL в Protégé проще, чем использовать SPARQL.   -  person Joshua Taylor    schedule 13.05.2014
comment
Например, см. некоторые из этих связанных вопросов: правила SWRL в протеже 3.4.8, Определение свойства онтологии в Protege-OWL / SWRL, Дизъюнкция внутри правила SWRL, Правила SWRL не выводят новые утверждения свойств объектов и данных. Некоторые из них содержат подробные пояснения по использованию правил SWRL в Protege.   -  person Joshua Taylor    schedule 13.05.2014
comment
@JoshuaTaylor Я имею в виду классифицировать всех людей, которые удовлетворяют этим условиям. Да отношение, которое мне нужно определить в запросе SPARQL. ac является представителем класса Action. И что я имел в виду под нестандартом, так это то, что я читал, что SWRL не будет непрерывным, как SPARQL.   -  person Pepita    schedule 14.05.2014


Ответы (1)


Я думаю, что вы имеете в виду что-то вроде этого:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX urPrefx :<http://YOUR ONTOLOGY PATH HERE>
SELECT ?r (COUNT( DISTINCT ?r) AS ?countNo)
WHERE
{   
    #Query 1.1 Where urPrefx:greaterOrEqualThan is a restricted property
    ?data_property_individual_categorie rdfs:subPropertyOf urPrefx:greaterOrEqualThan.

    #Query 1.2 Get all the action classes with those restricted property
    {SELECT DISTINCT * WHERE {?individuals_actions rdf:type ?ActionsClasses.?individuals_actions ?data_property_individual_categorie ?values_action}}

    #Query 1.3 Get all the agents with those restricted property
    {SELECT DISTINCT * WHERE {?individuals_agents rdf:type ?AgentClasses. ?individuals_agents ?data_property_individual_categorie ?values_agent}}

    #Get all No and Yes
    BIND(if( ?values_agent >=?values_action, urPrefx:Yes, urPrefx:No) AS ?r).
}GROUP BY ?r

Единственное, что вам нужно указать, это эти ДА и НЕТ; Что вы хотите с этим делать. Вам нужно будет использовать команду CONSTRUCT для назначения классу AgentRestrictions.

person titusfx    schedule 14.05.2014
comment
@Джошуа Тейлор, быть стандартом и иметь его - разные вещи. И не работает должным образом со всеми двигателями. - person titusfx; 14.05.2014
comment
это то что я хочу!!! И да, всего одного ответа НЕТ будет достаточно, чтобы не принадлежать к классу AgentRestriction. Большое спасибо!!! - person Pepita; 14.05.2014
comment
@Mauricio Маурисио Ну, есть документ, в котором указано, что такое SWRL и как он работает. Вопрос о том, является ли это рекомендацией W3C, совершенно не зависит от того, примут ли ее люди или нет. В реализациях SPARQL также существует множество вариаций. Например, обратите внимание, что если реализация расширяет функциональность >= (что ей разрешено делать), предоставленный вами запрос может работать не так, как ожидалось. Даже со стандартом не всегда все ясно. - person Joshua Taylor; 14.05.2014