Использование AllegroGraph 6.4.6
Я пытаюсь сгенерировать один запрос SPARQL DELETE с учетом определенных четырехугольников:
// Example of dataset used for generation of SPARQL
const quads = [
['<1>','<2>','<3>'], // Graph: DEFAULT
['<a>','<b>','<c>','<d>'], // Graph: <d>
['<w>','<x>','<y>','<z>'], // Graph: <z>
]
/* Example of triples being queried against
S P O G
--- --- --- ---
<1> <2> <3>
<a> <b> <c> <d>
<w> <x> <y> <z> If we delete <1> <2> <3>, we don't
<1> <2> <3> <4> <-- want to accidentally delete this quad
*/
Я могу сгенерировать запрос SELECT для определения существования всех четырехугольников:
# Returns all specified quads that exist
SELECT ?s ?p ?o ?g
FROM DEFAULT
FROM NAMED <d>
FROM NAMED <z>
WHERE {
{
?s ?p ?o.
VALUES (?s ?p ?o) {
( <1> <2> <3> )
}
}
UNION
{
GRAPH ?g {?s ?p ?o.}
VALUES (?s ?p ?o ?g) {
( <a> <b> <c> <d> )
( <w> <x> <y> <z> )
}
}
}
- Возвращает все четырехугольники, указанные в
VALUES
<1> <2> <3> <4>
не возвращается.
Следующий запрос представляет собой попытку создать запрос DELETE, но имеет несколько проблем (обратите внимание на комментарии Вариант 1 и Вариант 2):
# Should delete all quads specified in VALUES
DELETE {
GRAPH ?g {?s ?p ?o.}
?sD ?pD ?oD.
}
# USING DEFAULT # Option 1
# USING NAMED <d> # Option 2
# USING NAMED <z> # Option 2
WHERE {
{
?sD ?pD ?oD.
VALUES (?sD ?pD ?oD) {
( <1> <2> <3> )
}
}
UNION
{
GRAPH ?g {?s ?p ?o.}
VALUES (?s ?p ?o ?g) {
( <a> <b> <c> <d> )
( <w> <x> <y> <z> )
}
}
}
Если раскомментировать ТОЛЬКО вариант 1, возвращается сообщение об ошибке:
Found DEFAULT. Was expecting one of: NAMED, Q_IRI_REF, QNAME, QNAME_NS.
Если раскомментировать ТОЛЬКО вариант 2, будут удалены только указанные тройки именованных диаграмм:
DELETED: S P O G --- --- --- --- <a> <b> <c> <d> <w> <x> <y> <z>
Если прокомментированы ОБА Вариант 1 и Вариант 2, каждая тройка будет удалена, даже тройка
<1> <2> <3> <4>
, которую мы не пытались удалить.DELETED: S P O G --- --- --- --- <1> <2> <3> <a> <b> <c> <d> <w> <x> <y> <z> <1> <2> <3> <4>
DEFAULT
существует не в каждом магазине, если вообще есть (хотя он есть в обсуждение возможного включения в SPARQL 1.2). - person TallTed   schedule 31.10.2019SELECT
(неDELETE
) сFROM DEFAULT
а>. В нем говорится, что к безымянномуDEFAULT
именованному графу нельзя обращаться одновременно с другими именованными графами, поэтому я думаю, что ваш поиск единственного запроса для этого удаления не может быть удовлетворен, а также что вы, возможно, не сможете удалить{ <1> <2> <3> }
изDEFAULT
без также удаление{ <1> <2> <3> <4> }
. - person TallTed   schedule 31.10.2019PREFIX franzOption_defaultDatasetBehavior: <franz:rdf>
илиPREFIX franzOption_defaultDatasetBehavior: <franz:default>
и повторите эксперименты. - person Stanislav Kralin   schedule 31.10.2019