Как показано в этом вопросе, который имеет аналогичное название, я хотел бы получить ресурс dbpedia, зная часть его имени. Я новичок, когда дело доходит до SPARQL и тому подобного, но пример в вопросе мне очень помог, так как автор искал «Румыния», и ответивший человек подключил его с запросом Sparql для выполнения работы. Это хорошо, но вот в чем дело.
В примере они уже "знали", что Румыния - страна, отсюда и
?c a dbpedia-owl:Country ;
в предложении WHERE. Полный запрос sparql
SELECT ?c
WHERE {
?c a dbpedia-owl:Country ;
foaf:name "Romania"@en .
FILTER NOT EXISTS {?c dbpedia-owl:dissolutionYear ?y}
}
Но этот вопрос не полностью отвечает нашей потребности, поэтому поиск ЛЮБОГО ресурса по его имени, где «имя» является фактическим именем ресурса или его частью, независимо от его (rdf:) тип. Цель состояла бы в том, чтобы искать «что угодно», просто зная имя или его часть.
Я провел некоторое исследование, прежде чем задать вам этот вопрос, ребята, и я уже знаю, что проблема «части имени» может быть решена с помощью функции bif (плохой способ, поскольку он не совместим со sparql) или предложение CONTAINS, но я не смог найти ни одного примера, показывающего, как его использовать.
Давайте теперь предположим, что среди ресурсов dbpedia есть «слово», которое нужно найти, это слово будет введено каким-то пользователем. И назовем его "ВВОД".
Запрос, я полагаю, будет выглядеть так:
SELECT ?something WHERE
{
?something a (dbpedia Resource).
CONTAINS(?something,"INPUT")
}
Мой главный вопрос касается двух основных аспектов:
- Есть ли что-нибудь, описывающее тип ресурса Dbpedia? Я не думаю, что дело в онтологии или чем-то еще. Зная, что я хотел бы провести поиск среди всех ресурсов, чтобы найти один подходящий ...
- Конкретное имя, которое я бы предоставил, или какая-то строка. Я рассматривал вариант ФИЛЬТР, но это означало бы получение ВСЕХ ресурсов, а затем их фильтрацию по имени после их извлечения, что было бы, я думаю, не так оптимально.
Итак, кто-нибудь знает этот «основной запрос», чтобы получить ресурс, указав его имя или его часть? (Примером является предоставление «Обамы» и получение результатов не только для Барака, но и для Мишель).
Заранее спасибо.