技术编程像图一样的数据模型( 三 )
在Cypher中 , :WITHIN*0.. 非常简洁地表达了这一事实:它的意思是“沿着WITHIN边 , 零次或多次 。 ”就像正则表达式中的*运算符 。
从SQL:1999开始 , 通过使用名为“recursive common table expressions”来代表在查询中长度可变的遍历路径 。 下图展示了“查找所有从美国移民到欧洲的人的名字”的相同查询 。 然而 , 相比Cypher显得非常笨拙 。
本文插图
首先找出name属性的值是“United States”的顶点 , 并且设置它为in_usa顶点组中第一个元素
沿着所有往内指向in_usa顶点组中顶点 , 带有within标签的边 , 找出所有的顶点 , 把它们都加入到同一个组中 , 直到所有的within边都被访问过
以相同的方式建立in_europe顶点组
对于每个在in_usa组中的顶点 , 沿着往内指向的born_in边 , 找出所有出现在同一位置的人的顶点
同理与in_europe
最后 , 把出生在美国的人的组和居住在欧洲的人的组相交
如果同一查询可以用一种查询语言用4行编写 , 而用另一种查询语言需要29行编写 , 则仅表明不同的数据模型旨在满足不同的用例 。 选择适合您的应用程序的数据模型很重要 。 Triple-Stores 和 SPARQL
Triple-Stores模型是最等效于属性图模型的 , 使用不同的词来描述相同的想法 。 尽管如此 , 还是值得讨论 , 因为对于Triple-Stores来说 , 有多种工具和语言可以为构建应用程序的工具箱提供有价值的补充 。
在Triple-Stores中 , 所有信息都以非常简单的三部分语句的形式存储:(subject , predicate , object) 。 例如 , 在三元组(Jim , likes , bananas)中 , Jim是subject , likes是predicate , 而bananas是obejct 。
三元组中的subject等效于图中的顶点 。 而object是下面两项中的一项:
基本数据类型中的值 , 例如字符串或数字 。 在这种情况下 , 三元组的predicate和object等效于subject顶点上属性的键和值 。 例如 , (lucy , age , 33)就像一个具有属性{“ age”:33}的顶点lucy 。
图中的另一个顶点 。 在这种情况下 , predicate是图中的一条边 , subject是尾部顶点 , 而object是头部顶点 。 例如 , 在(lucy , marriedTo , alain)中 , subejct lucy和obejctalain都是顶点 , 并且predicate marriedTo是连接他们的边的标签 。
下图展示了之前用Cypher所表述的插入数据相同的意思 , 以三元组的形式写成一种名为Turtle(Notation3(N3)的子集)的格式 。
本文插图
在这个例子中 , 图的顶点被写作_:someName 。 当predicate代表边时 , object是一个顶点 , 诸如_:idaho :within _:usa
当predicate是一个属性时 , object就是一串字符串文字 , 比如说:_:usa :name "Unisted States"
一遍又一遍地重复相同的object是相当重复的 , 但是幸运的是 , 您可以使用分号对同一subject做好几件事 。 这使得Turtle格式相当不错并且可读性强 , 如下图:
本文插图
The semantic web语义网
如果您阅读有关Triple-Stores的更多信息 , 您可能会被大量关于语义网semantic web的文章所吸引 。 Triple-Stores数据模型完全独立于语义网-例如 , Datomic是一个Triple-Stores , 它不声称与它有任何关系 。但是由于在很多人的脑海中两者之间有着如此紧密的联系 , 因此我们应该简要地讨论一下 。
语义网从根本上讲是一个简单而合理的想法:网站已经将信息发布为文本和图片供人类阅读 , 那么为什么不将信息也发布为机器可读数据供计算机阅读呢?资源描述框架(Resource Description Framework , RDF)旨在作为一种机制 , 使不同的网站以一致的格式发布数据 , 从而允许将来自不同网站的数据自动组合到数据网络a web of data中 , 这是Internet范围内的“所有事物的数据库”的一类 。
推荐阅读
- 烹饪|锡纸烧烤技术,三款酱料配方是关键,制作好酱料锡纸类菜品轻松做
- 芯片|我国开始技术封锁!除量子密码以外,还有一项让美国憋屈十几年
- 上海嘉定|一项专利技术使车库车位增多10%,开发商们要坐不住了
- 上海市科学技术委员会|关于做好制订因公出国(境)培训中期规划的补充通知
- 闲情居|华为云手机发布,真正的5G手机,绕过光刻机的技术壁垒
- 一味宠爱|最全盘点卡中国脖子的35项技术,折射中国工业水平的真实现状
- 映璇汽车工作室|终于知道它为啥难卖了,看完长城WEY内部技术团队做的竞品分析
- Java|计算机专业的本科生,该选择学习Java技术体系还是.NET技术体系
- 人员|计划到期!立昂技术:部分董事、高管人员累计减持约47万股
- 南方PLUS|高新区面向全市征集30项以上技术需求,@佛山企业