语义网和链接数据类似于近太空:生命不存在。 到那里去或多或少要一段时间...好吧,我不知道他们在童年时代对您说过“我想成为一名宇航员”时告诉了您什么。 但是您可以观察到地球上正在发生的事情。 成为业余天文学家甚至是专业人士要容易得多。
本文将重点介绍RDF存储库领域中的最新趋势,但不超过几个月。 第一段中的隐喻灵感来自于这张史诗般的广告图片。
目录内容
I. GraphQL访问RDF
二。 MongoDB的适配器
三, OLTP与 OLAP
IV。 岩石数据库
V.LPG支持
V.1。 资料模型
V.1.1。 辛格尔顿物业
V.1.2。 修改正确
V.1.3。 其他方法
V.2。 查询语言
VI。 更严格的许可证
I. GraphQL访问RDF
他们说 GraphQL声称是访问数据库的通用语言。 使用GraphQL访问RDF的功能怎么样?
开箱即用,此机会由以下人员提供:
如果存储库没有提供这样的机会,则可以通过编写相应的解析器来独立实现。 例如,这是在法国项目DataTourisme中完成的 。 或者您已经什么也没写,只需要使用HyperGraphQL即可 。
从语义Web和链接数据的正统追随者的角度来看,所有这一切当然是可悲的,因为它似乎是针对基于常规数据孤岛构建的集成,而不适合该平台(当然是RDF存储)。
比较GraphQL和SPARQL的印象是双重的。
- 一方面,GraphQL看起来像是SPARQL的遥远亲戚:它解决了REST特定的重新获取和查询多重性的问题-如果没有它们,可能就算是对于Web而言,也不可能被视为一种查询语言,并且名称中带有“ -QL”;
- 另一方面,GraphQL的僵化电路不安。 因此,与RDF的完全反射性相比,它的“自省性”似乎非常有限。 而且没有类似属性的路径,因此不清楚为什么它是“ Graph-”。
二。 MongoDB的适配器
与前一个趋势互补的趋势。
- 在Stardog中,现在可以 -尤其是同一GraphQL上的所有内容-配置MongoDB数据到虚拟RDF图的映射。
- 最近, Ontotext GraphDB 允许您在MongoDB Query上将片段插入SPARQL。
从广义上讲,关于允许或多或少“即时”将JSON表示为RDF的JSON源适配器,值得回顾一下已经存在很久的SPARQL Generate ,例如可以将其附加到Apache Jena。
总结前两个趋势,可以说RDF存储在“多变量存储”(多语言持久性)条件下展示了它们为集成和运行做好充分准备。 但是,众所周知,后者早已过时,并且多模型将替代它。 那么在RDF存储领域中的多模型呢?
总之,没有办法。 我想专门针对多模型DBMS主题发表文章。 同时,您会注意到没有多模型DBMS,其中的主模型将是图(RDF),现在已经不多了。 第五部分将讨论一些小的多模型化-RDF存储库对替代LPG图模型的支持。
三, OLTP与 OLAP
但是,同一位Gartner 写道 ,多模型化主要是针对操作 DBMS的必要条件。 可以理解:在“多元存储”的情况下,主要问题与交易性有关。
但是OLTP-OLAP规模的RDF存储库在哪里? 我会这样回答:无论是那里还是这里。 为了表明它们的目的,需要一些第三缩写。 或者,我建议使用OLIP-在线智能处理。
但是,仍然:
- 用MongoDB实现的GraphDB集成机制并非旨在避免写性能问题;
- Stardog走得更远,完全重写了引擎,再次以提高录制性能为目标。
现在,让我向市场介绍一个新玩家。 来自IBM Netezza和Amazon Redshift- AnzoGraph的创建者。 来自产品广告的图像基于该图像放置在文章的开头。 AnzoGraph将自己定位为GOLAP解决方案。 您如何喜欢带有窗口功能的SPARQL? --
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { … }
IV。 岩石数据库
上面已经有一个指向 Stardog 7 Beta的公告的链接 ,该公告称Stardog将使用RocksDB作为底层存储系统-键值存储,即Google LevelDB的Facebook分叉。 为什么值得谈论某种趋势?
首先,根据Wikipedia文章判断,不仅RDF存储库被转移到RocksDB。 在ArangoDB,MongoDB,MySQL和MariaDB,Cassandra中,有一些将RocksDB用作存储引擎的项目。
其次,RocksDB正在制定相应主题的项目(即不是产品)。
例如,eBay在平台上将RocksDB用于其“知识图”。 顺便说一句,读起来很有趣: 查询语言开始是一种本土格式,但是最近它已经过渡到更像SPARQL了 。 就像在开玩笑:无论我们做多少知识图,我们仍然会得到RDF。
另一个示例是几个月前出现的Wikidata History Query Service 。 在出现之前,Wikidata必须通过MWAPI访问标准Mediawiki API。 现在,在纯SPARQL上有很多可能。 “内幕”下还有RocksDB。 顺便说一句,似乎WDHQS确实是将Freebase导入Google Knowledge Graph的人。
V.LPG支持
让我提醒您LPG图和RDF图之间的主要区别。
在LPG中,标量属性可以挂在边缘实例上,而在RDF中,它们只能挂在边缘的“类型”上(不仅标量属性,而且还可以是规则关系)。 与LPG相比,RDF的这一局限性通过各种建模技术得以克服 。 与RDF相比,LPG的局限性更难克服,但是LPG图比RDF图大,类似于Harari教科书中的图片,因此人们希望使用它们。
显然,LPG支持任务分为两个部分:
- 对RDF模型进行更改,从而可以在其中模拟LPG构造;
- 对RDF查询语言进行更改,以使其可以访问此修改后的模型中的数据,或者实现使用流行的LPG查询语言对该模型进行查询的功能。
V.1。 资料模型
有几种可能的方法。
V.1.1。 辛格尔顿物业
协调RDF和LPG的最直接方法可能是单例属性 :
- 相反,例如使用
:isMarriedTo
,则使用谓词:isMarriedTo1
,等等。 - 然后这些谓词成为新的三元组的主题::
:isMarriedTo1 :since "2013-09-13"^^xsd:date
等。 - 这些谓词实例与一个通用谓词之间的关系由以下形式的三元组建立
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo
。 - 显然,
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type
,但请考虑一下为什么不应该简单地编写:isMarriedTo1 rdf:type :isMarriedTo
。
支持LPG的任务在RDFS级别上已解决。 这种解决方案需要包含在相关标准中 。 支持附加效果的RDF存储库可能需要进行一些更改,但是目前,可以将Singleton属性简单地视为另一种建模技术。
V.1.2。 修改正确
较不幼稚的方法源于认识到属性实例是由三元组实例化的。 有机会谈谈三胞胎,我们有机会讨论属性实例。
这些方法中最可靠的方法是RDF * (又名RDR),它诞生于Blazegraph的肠子中。 从一开始,AnzoGraph就亲自选择了他 。 该方法的坚固性取决于以下事实:在RDF语义中提出了相应的更改。 但是,这一点非常简单。 在Turtle序列化中,现在可以将RDF编写如下:
<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .
V.1.3。 其他方法
您不必理会形式语义,而只需假设三胞胎具有某些标识符,这些标识符当然就是URI,并用这些URI组成新的三胞胎。 剩下的就是允许访问SPARQL中的这些URI。 这就是 Stardog所做的。
Allegrograph采取了一种中间方式。 众所周知,Allegrograph中存在三元组标识符,但是在实现三元属性时,它们不会突出显示。 但是,形式语义非常遥远。 值得注意的是,triplet的属性不是URI,这些属性的值也只能是文字。 液化石油气的拥护者获得了他们想要的东西。 在特别发明的NQX格式中,类似于上述RDF *的示例如下所示:
:bob :marriedTo :alice {"since" : "2013-09-13"}
V.2。 查询语言
在模型级别以一种或多种方式支持LPG之后,您需要有机会对这种模型进行数据请求。
SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }
- Anzograph还支持SPARQL *,并将支持Neo4j中的查询语言Cypher 。
- Stardog支持自己的SPARQL 扩展,并支持Gremlin。 您可以使用以下方法在SPARQL URI中获取三元组和“元信息”:
SELECT * { BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id) ?id :since ?since }
- Allegrograph还支持其自己的SPARQL 扩展 :
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }
顺便说一句,GraphDB一次支持Tinkerpop / Gremlin,虽然不支持LPG,但是在8.0或8.1版本中却停止了。
VI。 更严格的许可证
最近,在“选择的三重存储”和“开源三重存储”集的交集上没有添加任何内容。 新的开源RDF存储库远非是日常使用的理想选择,并且我们要使用的新三元器(相同的AnzoGraph)的源代码已关闭。 相反,我们可以谈论减少...
当然,以前的开放源代码不会关闭,但是某些开放源代码存储库逐渐不再被认为是值得选择的。 我认为具有开源版本的Virtuoso淹没了bug。 Blazegraph被AWS收购,并形成了Amazon Neptune的基础。 现在尚不清楚是否还会再发布至少一个版本。 剩下的就是耶拿...
如果开源不是很重要,但是您只想尝试,那么一切都比以前少了。 例如:
- Stardog 停止分发免费版本(但是,它已将常规版本的试用期延长了一倍);
- 在GraphDB Cloud (以前可以在其中选择免费的基本计划)中,新用户的注册被暂停。
通常,对于一般的IT外行来说,空间变得越来越不可访问;它的发展成为许多公司的选择。