在Grakn中,我想更改附加到name
的{{1}}属性的值。
目前我这样做(见下文),这只是删除属性,然后向国家实体插入一个新属性。
entity
我无法找到有关如何实际编辑属性值的任何文档。
有什么想法吗?
答案 0 :(得分:2)
在Grakn中理解的重要一点是,所有者之间共享具有相同类型和值的属性。
这意味着删除属于特定概念的属性也将删除所有其他概念。
以下是一些示例:
示例1
insert $x isa company, has name "grakn";
insert $x isa website, has name "grakn";
在这里,我们插入了两个共享名称的概念。
match $x isa company, has name $n; $n "grakn"; delete $n;
现在name
grakn
已被删除,这意味着它不再存在于数据库中,因此,您会发现它也已被网站删除。
示例2
insert $x isa company, has business-name "grakn", has company-number 01234;
insert $x isa company, has business-name "grakn", has company-number 56789;
insert $x isa website, has website-name "grakn";
在这种情况下,我们插入了两个不同的公司,它们的公司名称均为“ grakn”,一个网站的网站名为“ grakn”。
match $x isa company, has business-name $n, has company-number 01234; $n "grakn"; delete $n;
在这种情况下,不会删除website-name
“ grann”,但是公司的共享名称将被删除。
示例3 -可能是您想要的示例
insert $x isa company, has name "grakn";
insert $x isa website, has name "grakn";
与在ex1中一样,我们添加了共享属性的公司和网站(因为属性类型和值相同)。
这一次,我们只想删除公司和属性之间的关联,而保持网站不变:
match $x isa company, has name "grakn" via $r; delete $r;
这将找到关系$r
,这是将属性链接到其所有者并删除该属性的幕后实际连接。
与示例1相比,在这种情况下,您会发现该网站保留了其名称,因为该属性本身并未被删除,因此只有一个连接。
解决方案
更新属性需要额外的步骤,因为我们需要添加一个新属性来替换我们删除的属性。执行此操作时,我们需要确保引用的公司(实例)与删除其名称(属性)的公司相同。否则,如何重新查找被删除公司的名称才能添加新名称?
我们可以使用match... insert
查询,然后再进行insert
查询:
match $x isa company, has name "grakn";
insert $x has name "new-name";
match $x isa company, has name "grakn" via $r; delete $r;
答案 1 :(得分:1)
实际上现在,我不确定你能...我没有找到任何解决方案,如果你做了<script type="text/javascript">
function downloadReport() {
var x = upload();
if(x){
download();
}
}
function upload(){
alert("Waseem");
if(response){
return true;
}
return false;
}
function download(){
alert("Xax");
}
</script>
... match
你将添加一个新的资源,你需要删除旧的。它不会更新。我确信它会出现一个新功能;)
不要忘记insert
您的commit
交易。需要提交对图表的所有修改。