онтология намира свойства от клас и това е подклас

Използвам Protege за създаване на онтология

Ето концепцията на онтологията:

class : Human
dataProperties : 
    hasName ( Domain: Human)
    hasHeight ( Domain: Human)
    hasWeight ( Domain: Human)

class : Man    - subClassOf Human
dataProperties : 
    hasWife ( Domain: Man)

Искам да използвам Sparql за запитване на всички свойства на данните на Class:Man не само (hasWife), но и (hasName, hasHeight, hasWeight)

Трябва ли да посоча ограничението DataProperties като min:1?

Основната цел тук е да намеря Ако искам да създам индивидуален тип Class:Man

Как да намеря всички необходими имоти?

Защото всеки мъж трябва да има име, ръст и тегло.


person Darrellwan    schedule 25.12.2014    source източник
comment
Мисля, че това е отговорено в друг въпрос. Не мога да го търся сега, но търсенето в списъка на jena's Properties може да помогне.   -  person Joshua Taylor    schedule 26.12.2014
comment
Благодари ти. След като публикувам този въпрос и продължа да търся известно време. Вземете решение от 2 или 3 поста.   -  person Darrellwan    schedule 26.12.2014
comment
Къде намерихте отговора? Прекарах няколко минути в търсене на дубликат, но не можах да намеря. (Въпреки това мислех, че има такъв.)   -  person Joshua Taylor    schedule 27.12.2014


Отговори (2)


class : Human
dataProperties : 
    hasName ( Domain: Human)
    hasHeight ( Domain: Human)
    hasWeight ( Domain: Human)

class : Man    - subClassOf Human
dataProperties : 
    hasWife ( Domain: Man)

Искам да използвам Sparql за запитване на всички свойства на данните на Class:Man не само (hasWife), но и (hasName, hasHeight, hasWeight)

Първо, не забравяйте, че класовете нямат свойства в OWL. Свойствата могат да имат домейни и диапазони, но всичко това означава, че субектът (обектът) на едно твърдение е член на домейна (диапазон). Въпреки че има понятието клас, то не е съвсем същото като в обектно-ориентиран език за програмиране (с едно изпращане), където свойствата „принадлежат“ на класове.

Това каза, изглежда, че търсите всички свойства, които имат домейн, който е Man или суперклас на Man. (Имайте предвид, че казвам „домейн“, а не „домейнът“; свойствата могат да имат повече от един домейн. Всъщност, ако кажете, че домейн на hasWife е Man, тогава Human също е свойство на hasWife; след всички, ако знаете, че hasWife(x,y), знаете, че x трябва да е човек.) Това не е твърде трудно:

select ?p where {
  ?p rdfs:domain ?class .
  :Man rdfs:subClassOf* ?class .
}

Това означава да се намерят стойности на ?p, които имат домейн ?class, където :Man е свързан с ?class чрез път от rdfs:subClassOf връзки. Нотацията * означава, че пътят може да бъде с произволна дължина, включително нула. Когато дължината на пътя е нула, това означава, че ?class е :Man. Всъщност можете да напишете тази заявка малко по-сбито, ако използвате оператора ^, за да направите обратни пътища:

select ?p where {
  ?class ^rdfs:domain ?p ;
         ^rdfs:subClassOf* :Man
}

("домейн", защото свойствата могат да имат повече от един домейн.

person Joshua Taylor    schedule 26.12.2014
comment
Наистина ви благодаря! Частта с концепцията на класа е полезна. - person Darrellwan; 30.12.2014

Най-накрая намерих решение тук!

Ето го sparql

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl:  <http://www.w3.org/2002/07/owl#>
PREFIX dar:  <http://www.darrell.testSub#>

SELECT DISTINCT ?properties  ?superclass  ?propertyType
WHERE {    
dar:Man      rdfs:subClassOf*   ?superclass.
?properties  rdfs:domain        ?superclass.
?properties  rdf:type           ?propertyType
}

Но все още има някакъв проблем.

Първо, имам нужда от DISTINCT или ще получа 2 дубликата за всеки.

Второ, не мога да разбера защо избягва свойствата на класа Woman.

Human ( human's properties)
    --Man ( man's properties ) 
    --Woman ( woman's properties )

след като разсъждавам, питам за

‹ ?s rdfs:domain :Human›

Връща свойствата на (човек + мъж + жена).

Ако използвам sparql там горе. Мога да получа само свойствата на ( човек + човек ).

Въпреки че точно това е резултатът, който искам, но не мога да разбера защо.

person Darrellwan    schedule 26.12.2014
comment
Можете ли да дадете връзка към въпроса, където сте намерили отговор? - person Joshua Taylor; 27.12.2014
comment
Освен това, ако това не е пълен отговор на вашия въпрос, тогава трябва да обмислите да не го публикувате като отговор, а като актуализация на вашия въпрос. - person Joshua Taylor; 27.12.2014
comment
Съжалявам, че забравих да запазя връзката. Намерих ключовата дума Property Path. Там има много полезна информация! - person Darrellwan; 30.12.2014