我一直在开发一种包含查询语言的实现,它的文档非常有限,并且没有可用作指南的参考实现。包含语言查询树结构中是否存在树模式,语法如下:
A CONTAINS B CONTAINS ((C contains A) AND (C CONTAINS D))
A、B、C 和 D 是树节点的类型,或者从更通用的角度来看,它们是节点的标签。A CONTAINS B 表示 A 在树中某处下方有一个子 B。
实现需要返回使用上述语句查询的树实例的所有匹配子树(表示部分定义的树)。它还需要考虑模式出现的组合,例如,在上面的查询中,如果 C 在其下方有 2 个 A 实例,则 C-A1 与 CD 和 C-A2 与 CD 是两个不同的匹配项等。
我已经设计了自己的解决方案,但是我没有任何可以用作参考的东西,或者在我的代码旁边的回归测试中更好,以确保我的实现始终如一且正确地运行。
最棘手的一点是查询语言中的逻辑运算符。我将研究使用 XML 作为参考实现的 XQuery(目前不确定它是否可以做我想做的事情),但我也很想听听其他选项。开源会很棒,但即使是专有工具也能胜任。支持这种类型查询的图形数据库,也许是一些带有 RDF 的语义工具等?