Как связать строку с переменной в 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 ответ
Скорее всего, вы не видите результатов, потому что время ожидания запроса истекло. Это слишком тяжело для публичной конечной точки, которую вы используете. На самом деле, оба запроса слишком тяжелые, и если вы сделаете несколько попыток с разными строковыми значениями, вы можете заметить, что иногда первый запрос тоже останавливается, а иногда второй запрос возвращает некоторые результаты.