2015-01-21 3 views
0

Привет У меня есть запрос SPARQL, который имеет это в пункте гдеОдно значение в котором положение

... 
optional { 
     ?v foo:thing ?something . 
     $dontgetthis 
     ?v bar:somethingelse ?otherthing . 
... 
} 
... 

Теперь я получаю большую часть этого, за исключением одной вещи. Я не получаю $dontgetthis. Что это значит? $dontgetthis не используется нигде в запросе.

ответ

4

Знак доллара является префиксом юридической переменной в SPARQL, поэтому вы можете использовать переменные, такие как $v, но это не похоже на то, что происходит. Вы можете иметь дополнительный, как единственное, что в пределах WHERE, поэтому запрос, как это законно:

prefix foo: <> 
prefix bar: <> 
select * where { 
    optional { 
      ?v foo:thing ?something . 
      ?v bar:somethingelse ?otherthing . 
    } 
} 

Я бы скорее интересно, является ли запрос вы видите с $dontgetthis внутри это строка, где $dontgetthis собирается чтобы быть замененным чем-то другим каким-то другим кодом. Это не законный SPARQL сам по себе.

+0

Означает ли это, что переменная может иметь префикс либо с долларом, либо с вопросительным знаком? Есть ли разница между этими двумя? –

+0

Единственное отличие состоит в том, что один начинается с вопросительного знака, а другой начинается со знака доллара. '$ foo' и'? foo' - одна и та же переменная. (Свободно доступно онлайн, так что это не секретная информация или что-то еще) spec * явно * говорит так: * "** [4.1.3 Синтаксис для переменных запроса] (http://www.w3.org/TR/sparql11 -query/# QSynVariables) ** Переменная запроса помечена с помощью «?» или «$»; «?» или «$» не является частью имени переменной. В запросе $ abc и? abc идентифицирует ту же переменную. "* –

+0

@JoshuaTaylor Но не' '' обычно используется для параметров запроса, то есть vars, которые будут связаны снаружи при выполнении запроса? –

Смежные вопросы