Kri*_*ian 2 rdf sparql triplestore
最近,我根据匹配模式删除一些数据?s a :answers
,我注意到,如果两个条件块相同,我只能正确地进行删除:
PREFIX : <http://localhost:2020/vocab/>
DELETE {
?s a :answers
}
WHERE {
?s a :answers
}
# returns all the correct data
Run Code Online (Sandbox Code Playgroud)
如果删除块更通用,则不会返回任何内容:
PREFIX : <http://localhost:2020/vocab/>
DELETE {
?s ?p ?o
}
WHERE {
?s a :answers
}
# returns 0 rows
Run Code Online (Sandbox Code Playgroud)
拥有两组不同的条件(花括号之间的内容:)的目的是什么{...}
?究竟是哪一个选择了要删除的数据?
因为你删除的可能不是你和WHERE匹配的。
第一种情况有一个特殊的形式:
DELETE WHERE { ?s a :answers }
Run Code Online (Sandbox Code Playgroud)
在第二个中,?p 和?o 不受约束。尝试:
DELETE {
?s ?p ?o
}
WHERE {
?s a :answers .
?s ?p ?o .
}
Run Code Online (Sandbox Code Playgroud)