GraphQL和SPARQL有什么区别?

时间:2018-04-27 13:12:33

标签: graphql artificial-intelligence sparql semantic-web ontology

我现在在语义Web和代表个人与组织之间关系的复杂数据模型上做了大量研究。 我知道一些语义本体,虽然如果不制作图表,我从未理解它的用途。

我在大学维基上看到,质疑本体的语言是SPARQL(告诉我,如果我错了)。

但最近我看到一家创建了语义本体的公司将其置于GraphQL的形式,我不知道(https://diffuseur.datatourisme.gouv.fr/graphql/voyager/)。

在我看来,语义本体是为了更好地查找信息,例如制作聊天机器人(这是我想要做的),但是在这里他们将语义本体转换为API,是不是?要创建GraphQL,我应该首先构建一个语义本体吗?

你能否向我解释一下这一切之间的区别,说实话,这对我来说有点模糊。

4 个答案:

答案 0 :(得分:14)

<强>上下文

Datatourisme是一个平台,允许发布(通过 Producteur 组件)并使用(通过 Diffuseur 组件)与POI相关的开放数据。

GraphQL Voyager的帮助下,您似乎已链接到通过 Diffuseur 开发的特定应用程序。该应用程序说明了Diffuseur公开的GraphQL API的功能。

此处提供API文档(法语):

<强>问题

  • Datatourisme以RDF格式存储数据(可能使用Blazegraph triplestore)
  • Datatourisme通过GraphQL(而非SPARQL)
  • 提供访问权限

为什么选择RDF

  • 部分由于某些&#34;无模式&#34;,RDF在异构数据集成任务中很方便:

      

    旅游国家本体以共同的共享格式构建从法国不同官方数据库中提取的整个旅游数据:娱乐和活动,自然和文化场所,休闲和体育活动,旅游产品,旅游,住宿,商店,餐馆。 / p>

  • RDF是语义:特别是,RDF是自我描述的。

<强> SPARQL

  • SPARQL是用于RDF查询的W3C标准化语言。还提出了其他RDF查询语言。

    BTW,可以使用SPARQL查询非RDF源,例如: G。定义R2RML映射。

  • RDF自我描述和SPARQL标准消除了每天创建或学习新(shitty)API的需要。

<强> GraphQL

  • 与SPARQL类似,GraphQL允许避免多个请求。
  • GraphQL允许包装不同类型的不同数据源,但通常它们是REST API。

    如您所见,包装SPARQL端点possible(也存在HyperGraphQL)。

为什么选择GraphQL

为什么Datatourisme首选GraphQL?

  • GraphQL更接近他们集体使用的开发人员和技术。在过去,JSON-LD有相同的动机(但是,请参阅我关于JSON-LD的注释here)。

  • 看起来,Diffuseur的GraphQL层提供API密钥支持并防止过于复杂的SPARQL查询。

数据是否仍然是语义

  • 答案取决于语义的含义。有an opinion甚至关系模型都是非常语义的......

  • 如果有可能提取e,我肯定会回答。 G。使用GraphQL的comment:rcs属性(答案似乎是否定的)。

<强>结论

回答你的直接问题:

  • 为了使用GraphQL,首先不必(尽管可能)创建语义本体;
  • 创建语义本体后,没有必要(尽管可能)使用GraphQL。

回答你的间接问题:

  • 可能你需要一个语义本体来构建such chatbot;
  • 可能你还需要别的东西。

另请参阅:How is the knowledge represented in Siri – is it an ontology or something else?

<强>更新

除HyperGraphQL外,还有其他有趣的融合项目:

答案 1 :(得分:3)

很快,差异是:

  • SPARQL(SPARQL协议和RDF查询语言)是一种专用于查询RDF图形数据库(CRUD等)的语言。它是语义Web工具中的标准,由W3C Recommendation提供。

  • GraphQL是一种由Facebook创建的语言,它强烈重新安排JSON与API进行通信。它是客户端和服务器端点之间的通信工具。请求定义了答案的结构。它的用途不仅限于SQL或NoSQL或...... 对于RDF,“图形”并不表示“由三元组构成的结构”。

对于不同的应用程序,这是两种不同的语言。

答案 2 :(得分:3)

我已经在语义网上工作了好几年。 Graphql Sparql 是用于不同目的的不同语言。 SPARQL是一种可与三重存储,图形数据集和RDF节点配合使用的语言。 Graphql是一种API语言,最好用于处理 JSON 结构。至于您的具体情况,我建议您澄清在您的应用程序中使用AI的目标。如果您需要在应用程序中应用图形数据集,请执行更多高级知识发现,例如对数据集进行推理,那么您可能需要使用语义Web方法在数据集之上应用SPARQL。如下图所示,Semantic Web提供了不同的层来执行知识发现,执行推理,通过本体设计和RDF化的数据集。

enter image description here

请参阅here了解详情。 如果您的AI应用程序没有这样的要求,并且您可以使用基于JSON的数据库完成数据分析,那么Graphql可能是创建API的不错选择,因为它现在被不同的Web和移动应用程序广泛使用。特别是,它用于通过不同的平台和微服务共享您的数据。有关详细信息,请参阅hereenter image description here

希望它有所帮助!

答案 3 :(得分:2)

一个非常重要的区别是,虽然SPARQL通常是更强大的查询语言,但它通常只生成表格输出,而GraphQL则提供树结构,这在某些情况下很重要,我在前面的答案中没有提到实施案例。