我试着为一个计数设置两个不同的关系属性,一个case结构取决于另一个关系属性的值.http://console.neo4j.org/?id=rt1ld5上有一个控制台
cnt列包含r.value发生的次数.控制台中初始查询的前两行表示术语"Car"链接到1个被认为相关的文档,以及两个被认为不相关的文档.
我想在(用户)和(术语)之间的[:INTEREST]关系上设置一个属性,该属性有两个属性,表示兴趣链接到被认为是否相关的文档的次数.所以对于(John) - [r:INTEREST] - >(Car)我想要r.poscnt = 1而r.negcnt = 2
我正在努力与CASE结构.我尝试了各种方法,这是我得到的最接近的方式.
MATCH (u:user)-[int:INTEREST]->(t:term)<-[:ISABOUT]-(d:doc)<- [r:RELEVANCE]-(u)
WITH int, t.name, r.value, count(*) AS cnt
CASE
WHEN r.value=1 THEN SET int.poscnt=cnt
WHEN r.value=-1 THEN SET int.negcnt=cnt
END
Run Code Online (Sandbox Code Playgroud)
但它返回了一个错误
Error: Invalid input 'A': expected 'r/R' (line 3, column 2)
"CASE"
^
Run Code Online (Sandbox Code Playgroud) 花了一些时间搞清楚如何轻松删除断开连接的节点,但我无法"抓住"它们.
match (n)-[r]-(m) where r is null delete n
Run Code Online (Sandbox Code Playgroud)
显然不起作用,也不起作用
match (n) optional match (n)-[r]-(m) where r is null delete r
Run Code Online (Sandbox Code Playgroud)
那么,最好的方法是什么?
我有一个使用此创建的 rel 集合
MATCH (u:user)-[i:INTEREST]->(t:term)
WITH COLLECT([i,t]) AS its
RETURN its
Run Code Online (Sandbox Code Playgroud)
它正确返回 rels 和节点的数组。另请参阅http://console.neo4j.org/r/cw7saq
现在我想设置关系的属性,但不知道如何访问数组中的 rels。试过这个,
MATCH (u:user)-[i:INTEREST]->(t:term)
WITH COLLECT([i,t]) AS its
FOREACH (it IN its |
SET it[0].testprop=89292" )
Run Code Online (Sandbox Code Playgroud)
但它返回一个错误
Error: Invalid input '[': expected an identifier character, node labels, a property map, a relationship pattern, '(', '.' or '=' (line 4, column 16)
" SET it[0].testprop=89292" )"
Run Code Online (Sandbox Code Playgroud)
有人知道执行此操作的正确语法是什么吗?
我试图在以下SPARQL中获取来自地理名称的链接数据,但显然我做错了.
prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
select ?poi ?poiname ?geonames ?latitude
from <http://www.ophileon.com/ox/poi.rdf>
# from <http://sws.geonames.org/ >
where
{
?poi rdfs:label ?poiname.
?poi owl:sameAs ?geonames.
# ?geonames wgs84_pos:lat ?latitude.
FILTER(langMatches(lang(?poiname), "EN")).
}
Run Code Online (Sandbox Code Playgroud)
哪个,使用sparql.org的JSON输出:
{
"head": {
"vars": [ "poi" , "poiname" , "geonames" , "latitude" ]
} ,
"results": {
"bindings": [
{
"poi": { "type": "uri" , "value": "http://ophileon.com/ox/poi/2" } ,
"poiname": { "type": "literal" , "xml:lang": "en" , "value": "Wageningen" } …Run Code Online (Sandbox Code Playgroud)