Как связать строку с переменной в SPARQL

Следующий запрос

PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
PREFIX ore: <http://www.openarchives.org/ore/terms/>

SELECT *
{
        SERVICE <http://sparql.europeana.eu> {
              ?CHO ore:proxyIn ?proxy;
              dc:title ?title ;
              dc:creator ?creator ;
              dc:date ?date .
              FILTER REGEX(str(?creator),"corelli","i").
              ?proxy edm:isShownBy ?mediaURL .
            } 
}

вычисляет некоторые названия из некоторых произведений "corelli" из базы знаний Europeana. Но когда я пытаюсь связать переменную ?surname со строкой "corelli" это ничего не возвращает.

Например

SELECT *
{
        values ?surname { "corelli" }
        SERVICE <http://sparql.europeana.eu> {

              ?CHO ore:proxyIn ?proxy;
              dc:title ?title ;
              dc:creator ?creator ;
              dc:date ?date .
              FILTER REGEX(str(?creator),?surname,"i").
              ?proxy edm:isShownBy ?mediaURL .
            } 
}

FILTER REGEX выражение, кажется, не работает там (я использую экземпляр Blazegraph для вычисления этого запроса). Ни один, если я использую str(?surname) вместо ?surname,

Почему это так?

Кто-нибудь знает, что можно сделать, чтобы установить? Фамилию с некоторыми строковыми значениями (я мог бы захотеть собрать из другой конечной точки) и позволить запросу найти данные?

1 ответ

Скорее всего, вы не видите результатов, потому что время ожидания запроса истекло. Это слишком тяжело для публичной конечной точки, которую вы используете. На самом деле, оба запроса слишком тяжелые, и если вы сделаете несколько попыток с разными строковыми значениями, вы можете заметить, что иногда первый запрос тоже останавливается, а иногда второй запрос возвращает некоторые результаты.

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