У меня есть реализация списка Ordered List Ontology, и я хочу написать запрос SPARQL для вставки в определенную позицию в список. Моя идея состоит в том, что это процесс с двумя шагами. Учитывая мой список 0 на основе, и я хочу, чтобы вставить в положении N:Вставить в позицию в упорядоченном списке Ontology
- Изменить индекс элементов с индексом > = N к индекс +1
- Вставьте новый слот к положение N
я борюсь с обновлением, которое следует повторно индексировать слоты. Я пытаюсь:
DELETE {
<http://listTest> <http://purl.org/ontology/olo/core#slot> ?slot .
?slot a <http://purl.org/ontology/olo/core#Slot> .
?slot <http://purl.org/ontology/olo/core#index> ?index .
?slot <http://purl.org/ontology/olo/core#item> ?item
}
INSERT {
<http://listTest> <http://purl.org/ontology/olo/core#slot> ?slot .
?slot a <http://purl.org/ontology/olo/core#Slot> .
?slot <http://purl.org/ontology/olo/core#index> ?newIndex .
?slot <http://purl.org/ontology/olo/core#item> ?item
}
WHERE {
FILTER(?index >= TARGET_INDEX) # Here would be the numeric value of target index
BIND((?index + 1) AS ?newIndex)
}
Несмотря на то, что запрос выполняется до конца, индексы слотов не обновляются. Любые предложения о том, что я делаю неправильно, будут высоко оценены.
ПРИМЕЧАНИЕ: В Слоты пустые узлы, не уверен, является ли это важно, но только, чтобы убедиться, что у вас есть все детали.
Да, действительно. Я пришел к точно такому же выводу. большое спасибо –