#if-statement #insert #sparql #rdf
Вопрос:
У меня есть этот запрос на вставку:
INSERT
{
<http://www.google.com/go/guest> <http://www.google.com/go/hasRelatives> ?state}
WHERE {?state a <http://www.google.com/go#State>.
filter ($state=<http://www.google.com/go/State-USA>)
}
Если состояние равно <http://www.google.com/go#State-USA>
, мне нужно будет вставить все состояния типа <http://www.google.com/go#State>
. -Именно то, что делает запрос вставки SPARQL в данный момент.
Если нет, мне нужно будет вставить только указанное состояние, например: <http://www.google.com/go#State-Alabama>
Как и в приведенном ниже запросе:
INSERT { <http://www.google.com/go/guest> <http://www.google.com/go/hasRelatives> $state }
WHERE {?state a <http://www.google.com/go#State>.
filter ($state!=<http://www.google.com/go/State-USA>)
}
Как я мог бы написать if-else
оператор внутри insert, чтобы проверить, каково значение ?состояние, а затем выполнить необходимый запрос insert .
Как я мог объединить два запроса только в один, с надлежащими условиями?
Тройки:
@prefix : <http://www.google.com/go#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<http://www.google.com/go/State-USA> a :State ;
rdfs:label "USA" .
<http://www.google.com/go/State-Michigan> a :State ;
rdfs:label "Michigan" .
<http://www.google.com/go/State-NewYork> a :State ;
rdfs:label "New York" .
<http://www.google.com/go/State-Alabama> a :State ;
rdfs:label "Alabama" .
Комментарии:
1. Я не понимаю. Что находится в тройном хранилище и что передается извне вашим клиентским кодом? Пожалуйста, предоставьте образец существующих данных RDF, а затем ожидаемый результат после ВСТАВКИ — оба в нотации Turtle, что упрощает просмотр структурированных данных вместо вербализованного описания
2. @UninformedUser Я обновил вопрос с помощью троек и двух запросов.
3. спасибо — но я думаю, что я все еще не понимаю. Ваши данные просто содержат
rdf:type
тройки для состояний. Но я не понимаю, что еще дано.$state
Означает ли это, что он поступает из какого-либо внешнего исходного кода в виде встроенной строки?4. Да, вы можете думать о $state как < google.com/go/State-Alabama > например. Или < google.com/go/State-USA >. Он поступает из внешнего источника