Получение ресурса DBpedia по его строковому имени с помощью SPARQL и без знания его типа

Как показано в этом вопросе с аналогичным названием, я хотел бы получить ресурс 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")
   }

Мой главный вопрос касается двух основных аспектов:

  1. Есть ли что-нибудь, что описывает тип ресурса Dbpedia? Я не думаю, что это связано с онтологией или чем-то в этом роде. Зная, что я хотел бы поискать среди всех ресурсов, чтобы найти один подходящий ...
  2. Конкретное имя, которое я мог бы предоставить, или некоторую строку. Я рассматривал вариант ФИЛЬТР, но это означало бы получение ВСЕХ ресурсов, а затем их фильтрацию по имени после того, как они были получены, что, я думаю, не так оптимально.

Итак, знает ли кто-нибудь этот «главный запрос», чтобы получить ресурс, указав его имя или его часть? (Пример - предоставление «Обамы» и получение результатов не только для Барака, но и для Мишель).

Заранее благодарю.

11
задан Community 23 May 2017 в 12:09
поделиться