Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Acl 检索不同的标记顶点和/或顶点之间的属性_Acl_Graph Databases_Gremlin_Janusgraph - Fatal编程技术网

Acl 检索不同的标记顶点和/或顶点之间的属性

Acl 检索不同的标记顶点和/或顶点之间的属性,acl,graph-databases,gremlin,janusgraph,Acl,Graph Databases,Gremlin,Janusgraph,下面是我的图表 g.addV('user').property('userId','user1').as('u1'). addV('user').property('userId','user2').as('u2'). addV('user').property('userId','user3').as('u3'). addV('group').property('groupId','group1').as('g1'). addV('group'

下面是我的图表

 g.addV('user').property('userId','user1').as('u1').
      addV('user').property('userId','user2').as('u2').
      addV('user').property('userId','user3').as('u3').
      addV('group').property('groupId','group1').as('g1').
      addV('group').property('groupId','group2').as('g2').
      addV('group').property('groupId','group3').as('g3').
      addV('folder').property('folderId','folder1').property('folderName','level1_1').property('description','level1_desc1').as('f1').
      addV('folder').property('folderId','folder2').property('folderName','level2_2').property('description','level2_desc2').as('f2').
      addV('folder').property('folderId','folder3').property('folderName','level3_3').property('description','level3_desc3').as('f3').
      addV('object').property('objId','obj1').property('objTitle','objtitle1_1').property('description','o1_desc1').as('o1').
      addV('object').property('objId','obj2').property('objTitle','objtitle2_2').property('description','o2_desc2').as('o2').
      addV('object').property('objId','obj3').property('objTitle','objtitle3_3').property('description','o3_desc3').as('o3').
      addE('in_folder').from('o1').to('f2').
      addE('in_folder').from('o2').to('f3').
      addE('in_folder').from('o1').to('f3').
      addE('in_folder').from('f2').to('f1').
      addE('in_folder').from('f3').to('f2').
      addE('member_of').from('u1').to('g1').
      addE('member_of').from('u2').to('g2').
      addE('member_of').from('u3').to('g3').
      addE('member_of').from('g3').to('g1').
      addE('has_permission').from('g1').to('f1').
      addE('has_permission').from('g1').to('f1').
      addE('has_permission').from('g2').to('f2').
      addE('has_permission').from('g3').to('f3').
      addE('has_permission').from('u2').to('f1').iterate()   
图上的两个问题

1-如何在单个查询中检索用户有权访问的所有文件夹和对象

但是这个查询会生成每个对象及其文件夹顶点,而我的期望是接收像搜索结果一样的文件夹和对象作为搜索结果

2-在层次结构中获取对象顶点的“基于对象顶点”属性或“文件夹顶点”属性,这意味着所有对象都可以基于任何级别的“文件夹顶点”属性访问

我在下面写了一个查询,当文件夹和对象顶点属性值匹配时返回结果

g.V().has('user','userId','user1').emit().until(__.not(outE('member_of'))).repeat(out('member_of')).outE('has_permission').inV().has('folderName',textContains('level1')).inE('in').outV().has('objTitle',textContains('objtitle3')).as('o').select('o').valueMap('objTitle','objId').dedup().range(1,20)
如何在对象和文件夹顶点属性之间执行或操作,以及如何在文件夹和对象顶点的多个属性上执行或操作?

1-如何检索用户在单个查询中可以访问的所有文件夹和对象


你能详细谈谈第二个问题吗?例如,用于描述问题的预期结果或图形。根据文件夹顶点的属性值或对象自身属性值检索对象。在我编写的查询中,获取同时匹配folderName属性文本和objTitle属性文本的对象。如何使这个to或子句与文本中的任何一个匹配。该查询显示每个顶点类型的一个字段,但需要使用OR子句实时检查它们之间的多个属性值。我编写的查询应在以下情况下返回结果:当提供了'folderName',textContains'fake'时,静止对象文本与某个dataHi Sel匹配,而上面的查询出现错误。方法:groovysh_evaluate.identify的无签名适用于参数类型:值:[]可能的解决方案:identitygroovy.lang.Closure,notifygraph=JanusGraphFactory.open'conf/gremlin server/janusgraph cql es server.properties'使用janusgraph工厂获取遍历对象。它应该是identify而不是identify。
g.V().has('user','userId','user1').emit().until(__.not(outE('member_of'))).repeat(out('member_of')).outE('has_permission').inV().has('folderName',textContains('level1')).inE('in').outV().has('objTitle',textContains('objtitle3')).as('o').select('o').valueMap('objTitle','objId').dedup().range(1,20)
g.V().has('user','userId','user1').
repeat(out('member_of')).emit().
until(__.not(outE('member_of'))).
out('has_permission').dedup().
union(
// all folders
identity(),
// all sub-folders and objects
__.repeat(__.in('in_folder')).emit().until(__.not(inE('in_folder')))
).dedup()