我正在尝试在OrientDB图中存储DNS层次结构的想法,并且无法找到为给定域添加新顶点的适当位置。在OrientDB中搜索已知路径
我开始用这种结构:
CREATE CLASS Zone EXTENDS V
CREATE CLASS Subdomain_of EXTENDS E
CREATE VERTEX Zone CONTENT {name: '.'} #12:0
CREATE VERTEX Zone CONTENT {name: 'com'} #12:1
CREATE VERTEX Zone CONTENT {name: 'net'} #12:2
CREATE VERTEX Zone CONTENT {name: 'org'} #12:3
CREATE VERTEX Zone CONTENT {name: 'example'} #12:4
CREATE VERTEX Zone CONTENT {name: 'www'} #12:5
CREATE EDGE Subdomain FROM #12:1 TO #12:0
CREATE EDGE Subdomain FROM #12:2 TO #12:0
CREATE EDGE Subdomain FROM #12:3 TO #12:0
CREATE EDGE Subdomain FROM #12:4 TO #12:1
CREATE EDGE Subdomain FROM #12:5 TO #12:4
我想创建一个保存的功能,将采取一个域名字符串作为输入,并添加相关的子域图形。
想象一下,我想添加域名“mail.example.com”。该功能需要先搜索以查看.com.example.mail路径是否存在 - 如果不存在,则应检查.com.example并将具有子域边缘的“mail”的新顶点添加到“example”顶点。
有没有基于特定路径搜索叶节点的方法?一个类似于的Neo4j/Cypher支架语法:
MATCH
(:Zone {name: ‘.’})<-[Subdomain]-(:Zone {name: ‘com’})<-[:Subdomain]-(a:Zone {name: ‘example’})
RETURN (ID(a))
感谢,
查尔斯
关于功能,你在Java或Javascript中开发更有用吗? 我不明白'你要搜索一个叶节点'是什么意思,你想要搜索,例如有一个叫做“www”的“顶点叶”? – lsavio