men*_*ics 5 database data-structures
我需要根据有孩子的东西来建模一个图形(或者可以看作是一个递归树,因为它通常是一个或少数个根):
a hasChildren (b, c)
b hasChildren (d, e)
c hasChildren (f, g)
d hasChildren (h, a)
Run Code Online (Sandbox Code Playgroud)
现在有隐含路径,a/c/f和递归路径:a/b/d/a/b/d/...
然后我需要通过路径表达式在图表上设置内容,包括它们的属性(这些路径有颜色:蓝色等)以及更改它们的子项 - 可能是删除/隐藏它们,或者添加新的子项.
通过路径表达,我的意思是这样的:
a/b/** -> color = "blue"
Run Code Online (Sandbox Code Playgroud)
意味着所有以a/b /开头的路径都具有属性color ="blue".因此,如果我查询a/b/d/a/b/d/a的颜色,它将返回蓝色.但是如果我只询问a的颜色,那么就没有了.
其他表达可能是:
**/d/h
a/b/[color="blue"]
a/**/h
Run Code Online (Sandbox Code Playgroud)
所以,这将用于发表声明.我需要类似的查询方式.我需要简单的查询,例如:
a/b/d
Run Code Online (Sandbox Code Playgroud)
更复杂的是:
a/**[color="blue"] -- descendants that have attribute color = "blue". This could be infinite in recursive case so we can put a restriction on this type of query to have it make sense, like does such a path exist, or just return first one or something.
Run Code Online (Sandbox Code Playgroud)
此外,可以随时添加更多节点.
a hasChildren(b,c,x,y,z)
之后我需要查询以恰当地匹配所有语句.换句话说,我不能只运行查询并在所有结果上设置属性,因为它不适用于以后添加的新内容.
当然,我需要它非常快:)我将拥有1000个节点的顺序,1000个路径表达式语句,以及100,000个路径表达式的查询.
有什么东西可以很好地处理这类事情吗?
我查看了RDF/OWL类似的东西,但它似乎没有任何路径支持.
如果我正确理解你的问题,你正在谈论针对对象关系做出的推论进行查询。如果是这样,您需要查看 RDF 和 SPARQL http://www.w3.org/TR/rdf-sparql-query/以及整个语义内容领域。