在龟中,我有类似的东西:
@prefix b: <http://www.fake.org/vl/> .
b:ID_13 b:OwnBy b:Katrin ;
b:Rank "5" .
b:FID_13 b:OwnBy b:emily ;
b:Rank "9" ;
b:Comment "comment \"George goes to school!" ;
b:Time_Comment "at 10:18 21/01/2015" .
当我使用
时SELECT * WHERE{
?ID b:OwnBy ?Name;
b:Rank ?Rank;
}
我得到了结果
ID Name Rank
ID_13 Katrin "5"
ID_13 emily "9"
如何为ID_13 Katrin插入另一个等级(仅适用于katrin)????
我试过这个
INSERT {b:ID_13 b:Rank "pppppppppppppp"}
WHERE{b:ID_13 b:OwnBy b:Cathy}
但是当我使用select查看我插入的内容时,此查询会将新的等级插入到Katring和emily中,然后我会得到以下结果:
ID Name Rank
ID_13 Katrin "5"
ID_13 Katrin "pppppppp"
ID_13 emily "9"
ID_13 emily "pppppppp"
答案 0 :(得分:2)
您的示例数据包含两个三元组,其属性为b:OwnBy
:
b:ID_13 b:OwnBy b:Katrin .
b:ID_13 b:OwnBy b:emily .
(我假设您问题中的b:FID_13
是拼写错误)
请注意,两个三元组共享相同的主题。因此,b:ID_13
表示的资源由Katrin和emily共同拥有。
您的INSERT
操作会尝试添加三重b:ID_13 b:Rank "pppppppppppppp"
。 WHERE
子句没有任何意义,因为没有变量可以填充这个模式 - 这不是完全错误的,但它并没有真正做任何有用的事情。除此之外,你想要做的只是一个逻辑上的不可能性。由于b:ID_13
是所有者Katrin
和emily
的共享主题,因此您无法插入b:ID_13
的排名,该排名不会自动应用于Katrin
和emily
。
错误不是您的INSERT
操作,而是您的输入数据。您需要确保Katrin
和emily
拥有的资源不共享相同的主题标识符。