SPARQL - запрос на основе некоторого свойства

58
6

Я хочу получить все имена пиццы, у которых есть начинки из сыра, но результат показывает (_: b0), который является видом ограничения совы, следующим является мой запрос

PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
SELECT ?X WHERE {
?X rdfs:subClassOf* [
owl:onProperty pizza:hasTopping ;
owl:someValuesFrom pizza:CheeseTopping
]
}

используя онтологию пиццы из Стэнфорда

спросил(а) 2017-07-13T02:57:00+03:00 3 года, 3 месяца назад
1
Решение
70

Это работает (без разрешения)

 PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
SELECT ?X ?topping WHERE {
?X rdfs:subClassOf ?Y .
?Y owl:someValuesFrom ?topping .
?topping rdfs:subClassOf* pizza:CheeseTopping
}
ORDER BY ?X

Некоторые из них перечислены более одного раза, так как они могут содержать более одного CheeseTopping. Чтобы удалить дубликаты:

 PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
SELECT DISTINCT ?X WHERE {
?X rdfs:subClassOf ?Y .
?Y owl:someValuesFrom ?topping .
?topping rdfs:subClassOf* pizza:CheeseTopping
}
ORDER BY ?X

Это работает, если вы включаете аргументацию:

PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
SELECT DISTINCT ?X WHERE {
?X rdfs:subClassOf pizza:CheeseyPizza
}

Ссылка: Используется онтология пиццы отсюда: http://protege.stanford.edu/ontologies/pizza/pizza.owl

ответил(а) 2017-07-13T13:53:00+03:00 3 года, 3 месяца назад
58

Этот запрос работает, но действительно сложный и может быть неполным, поскольку некоторые пиццы используют сложные конструкции OWL:


PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
SELECT DISTINCT ?pizza WHERE {

{
?pizza rdfs:subClassOf* pizza:Pizza .
?pizza owl:equivalentClass|rdfs:subClassOf [
rdf:type owl:Restriction ;
owl:onProperty pizza:hasTopping ;
owl:someValuesFrom/rdfs:subClassOf* pizza:CheeseTopping
]

} UNION {
?pizza owl:equivalentClass _:b0 .
_:b0 rdf:type owl:Class ;
owl:intersectionOf _:b1 .
_:b1 (rdf:rest)*/rdf:first ?otherClass.
?otherClass rdf:type owl:Restriction ;
owl:onProperty pizza:hasTopping ;
owl:someValuesFrom/rdfs:subClassOf* pizza:CheeseTopping

}
}

ответил(а) 2017-07-13T12:28:00+03:00 3 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема