Извлечение наиболее специфических классов экземпляров
Можно ли получить определение ресурса (из DBpedia) с помощью запроса SPARQL? Я хочу иметь что-то вроде TBox и ABox, которые показаны в (Концептуальных) методах кластеризации для семантической паутины: проблемы и приложения (слайды 10–11). Например, для ресурса DBpedia Стивена Кинга я хотел бы иметь:
Stephen_King: человек ⊓ писатель ⊓ мужчина ⊓ … (наиболее конкретные занятия)
1 ответ
Вы можете использовать запрос, подобный следующему, чтобы запросить классы, экземпляром которых является Стивен Кинг, у которых нет подклассов, экземпляром которых является также Стивен Кинг. Похоже, это хорошо согласуется с идеей "самых специфических классов". Однако, поскольку (насколько я знаю) нет никакого связующего, связанного с конечной точкой DBpedia SPARQL, могут быть отношения подкласса, которые могут быть выведены, но которые явно не определены. присутствует в данных.
select distinct ?type where {
dbr:Stephen_King a ?type .
filter not exists {
?subtype ^a dbr:Stephen_King ;
rdfs:subClassOf ?type .
}
}
На самом деле, так как каждый класс является 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 )
}
}
Если вам действительно нужна строка результата, подобная показанной на этих слайдах, вы можете использовать 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
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