Простой запрос в 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)

Результаты выглядят так:

Результаты в Protégé

Пару заметок, хотя. В идеале вы хотели бы указать, что метод на самом деле является методом. Во-первых, обычно хорошей идеей будет называть ваши классы единичными формами слова, поскольку более естественно говорить, что отдельный метод "является методом", а не "является методом". В любом случае, так как класс называется Methods, было бы неплохо написать тело запроса как

?method a :Methods .
?method :hasAuthor ?author .
?author a :Author .

но это не сработает, если у вас нет подключенного аргумента (так что лица, объявленные членами подклассов методов, также могут быть выведены как члены методов).

Другие вопросы по тегам