Как вставить данные с помощью параметризованного запроса sparql?

#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 >. Он поступает из внешнего источника