Простой запрос в SPARQL, в Protege
Может кто-нибудь помочь мне с SPARQL, потому что я не могу понять его синтаксис.
Как я могу просмотреть информацию из этой онтологии
https://www.dropbox.com/s/m25d6x3ej7ppjw4/MyProject.owl
Я должен просмотреть информацию об авторах, которые создают более 1 метода.
Информация о методах, созданных ранее 1900 года
И наконец, название "Сфера использования" и методы, которые использовались в сфере.
Я буду рад, если кто-то может дать некоторые ссылки с синтаксисом SPARQL с простыми примерами или объяснит мне, как это работает.
1 ответ
Вы можете использовать такой запрос, чтобы найти авторов более чем одного метода:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <http://www.semanticweb.org/vyacheslav/ontologies/2013/11/untitled-ontology-6#>
SELECT ?author (count(?method) as ?numMethods)
WHERE {
?method :hasAuthor ?author .
?author a :Author .
}
group by ?author
having (?numMethods > 1)
Результаты выглядят так:
Пару заметок, хотя. В идеале вы хотели бы указать, что метод на самом деле является методом. Во-первых, обычно хорошей идеей будет называть ваши классы единичными формами слова, поскольку более естественно говорить, что отдельный метод "является методом", а не "является методом". В любом случае, так как класс называется Methods, было бы неплохо написать тело запроса как
?method a :Methods .
?method :hasAuthor ?author .
?author a :Author .
но это не сработает, если у вас нет подключенного аргумента (так что лица, объявленные членами подклассов методов, также могут быть выведены как члены методов).