онтология находит свойства из класса и его подкласса

Я использую Protege для создания онтологии

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

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

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

Я хочу использовать Sparql для запроса всех свойств данных класса: Man не только (hasWife), но и (hasName, hasHeight, hasWeight)

Нужно ли указывать ограничение DataProperties, например min:1?

Основная цель здесь - найти Если я хочу создать индивидуальный тип Class: Man

Как найти все необходимые свойства?

Потому что у каждого мужчины должно быть имя, рост и вес.


person Darrellwan    schedule 25.12.2014    source источник
comment
Я думаю, что на это был дан ответ в другом вопросе. Я не могу найти его сейчас, но может помочь поиск в listProperties jena.   -  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 для запроса всех свойств данных класса: 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:домен :человек›

Он возвращает (человек + мужчина + женщина) свойства

Если я использую 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