Вы можете использовать следующий запрос, чтобы запросить классы, экземпляром которых является Стивен Кинг, не имеющие подклассов, экземпляром которых также является Стивен Кинг. Кажется, это хорошо согласуется с идеей «наиболее специфичных классов». Однако, поскольку (насколько мне известно) к конечной точке DBpedia SPARQL не привязано средство рассуждений, могут существовать отношения подклассов, которые можно вывести, но которые явно не присутствуют в данных.
select distinct ?type where {
dbr:Stephen_King a ?type .
filter not exists {
?subtype ^a dbr:Stephen_King ;
rdfs:subClassOf ?type .
}
}
Результаты SPARQL
На самом деле, поскольку каждый класс сам по себе является rdfs:subClassOf
, вы можете добавить еще одну строку в этот запрос, чтобы исключить случай, когда ?subtype
и ?type
совпадают:
select distinct ?type where {
dbr:Stephen_King a ?type .
filter not exists {
?subtype ^a dbr:Stephen_King ;
rdfs:subClassOf ?type .
filter ( ?subtype != ?type )
}
}
Результаты SPARQL
Если вам действительно нужна результирующая строка, подобная той, что показана на этих слайдах, вы можете использовать values
для привязки переменной к dbr:Stephen_King
, а затем использовать некоторую группировку и конкатенацию строк, чтобы получить что-то более красивое (вроде):
select
(concat( ?person, " =\n", group_concat(?type; separator=" AND\n")) as ?sentence)
where {
values ?person { dbr:Stephen_King }
?type ^a ?person .
filter not exists {
?subtype ^a ?person ;
rdfs:subClassOf ?type .
filter ( ?subtype != ?type )
}
}
group by ?person
Результаты SPARQL
http://dbpedia.org/resource/Stephen_King =
http://dbpedia.org/class/yago/AuthorsOfBooksAboutWritingFiction AND
http://dbpedia.org/ontology/Writer AND
http://schema.org/Person AND
http://xmlns.com/foaf/0.1/Person AND
http://dbpedia.org/class/yago/AmericanSchoolteachers AND
http://dbpedia.org/class/yago/LivingPeople AND
http://dbpedia.org/class/yago/PeopleFromBangor,Maine AND
http://dbpedia.org/class/yago/PeopleFromPortland,Maine AND
http://dbpedia.org/class/yago/PeopleFromSarasota,Florida AND
http://dbpedia.org/class/yago/PeopleSelf-identifyingAsAlcoholics AND
http://umbel.org/umbel/rc/Artist AND
http://umbel.org/umbel/rc/Writer AND
http://dbpedia.org/class/yago/20th-centuryNovelists AND
http://dbpedia.org/class/yago/21st-centuryNovelists AND
http://dbpedia.org/class/yago/AmericanHorrorWriters AND
http://dbpedia.org/class/yago/AmericanNovelists AND
http://dbpedia.org/class/yago/AmericanShortStoryWriters AND
http://dbpedia.org/class/yago/CthulhuMythosWriters AND
http://dbpedia.org/class/yago/HorrorWriters AND
http://dbpedia.org/class/yago/WritersFromMaine AND
http://dbpedia.org/class/yago/PeopleFromDurham,Maine AND
http://dbpedia.org/class/yago/PeopleFromLisbon,Maine AND
http://dbpedia.org/class/yago/PostmodernWriters
person
Joshua Taylor
schedule
28.10.2013