我正在尝试删除与一系列相似内容相关的特定三元组。那么,我们在哪里......
someURI a our:thing;
our:name "literal".
someOtherURI a our:thing;
our:name "literal".
...n
我想专门删除所有someURI our:name "literal"
三元组并保留定义的内容。
我知道我可以通过DELETE DATA
执行此操作,但这需要我首先了解所有URI,这本身就是太多的步骤。
我与DELETE WHERE
有点挣扎,但我认为答案就像...
DELETE{ ?uri our:name ?literal }
WHERE{ ?uri a our:thing. }
首先,是我的DELETE WHERE
声音?
其次,我想知道是否可以在SELECT
内嵌套DELETE DATA
查询?所以......
DELETE DATA{
?uri our:name ?literal
{
SELECT ?uri
WHERE {?uri a our:thing.}
}
}
具体来说,子查询是否会提供地面三元组(用于替换?uri
变量的URI,或者DELETE DATA
的无变量规则是否会先抛出错误?这似乎很明显,但我已经一直想知道,无法在我的三重商店中测试它。我正在使用OWLIM-SE。
答案 0 :(得分:4)
首先,是我的
DELETE WHERE
声音?
几乎,但不完全。 DELETE
子句不能包含任何未绑定在WHERE
子句中的变量(在您的情况下为变量?literal
)。所以你需要稍微修改它,如下所示:
DELETE {
?uri our:name ?literal .
}
WHERE {
?uri a our:thing;
our:name ?literal .
}
其次,我想知道是否可以在
SELECT
内嵌套DELETE DATA
查询 一个DELETE DATA
?
这是不可能的。 SELECT
操作只能 包含固定的RDF三元组 - 没有变量,当然也没有子查询。
但是,如果需要,可以在DELETE WHERE
操作中使用嵌套DELETE {
?uri our:name ?literal .
}
WHERE {
{ SELECT ?uri ?literal
WHERE { ?uri a our:thing;
our:name ?literal .
}
}
}
。所以以下是合法的:
.btn {padding:10px 40px 10px 20px;
width:70%;
border-radius:3px;
border:2px solid inherit;
border-color: #eeeeee;
background-color:rgb(153,0,51);
background-position:center right;
background-repeat:no-repeat;
text-align:center;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#990033', endColorstr='#ffffff',GradientType=1 ); /* IE6-9 */
font-size: .6em
}
.white_txt {color:#ffffff!important;}
.purple_btn {border:2px solid #eeeeee;border-radius:3px;}
在您的特定情况下,它并没有给您带来任何优势:此更新表达与第一个完全相同的东西,只是以更迂回的方式。