首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphQL和SPARQL有什么区别?

GraphQL和SPARQL有什么区别?
EN

Stack Overflow用户
提问于 2018-04-27 13:12:32
回答 4查看 11.2K关注 0票数 32

我现在正在对语义Web和代表个人和组织之间关系的复杂数据模型进行大量的研究。我知道一些语义本体论,虽然我从来不理解它是如何使用的,如果不制作图表的话。

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

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

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-04-27 18:32:25

上下文

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

GraphQL航海家的帮助下,您似乎已经链接到了通过Diffuseur开发的特定应用程序。该应用程序演示了由扩散器公开的GraphQL API的功能。

API文档可在这里查阅(法文):

问题

  • Datatourisme以RDF格式存储数据(想必使用Blazegraph )
  • Datatourisme通过GraphQL (不是SPARQL)提供访问

为什么RDF

  • 部分由于“原理图”,RDF在异构数据集成任务中非常方便: 旅游国家本体以一种通用的共享格式,从法国不同的官方数据库中提取出完整的旅游数据:娱乐和活动、自然和文化场所、休闲和体育活动、旅游产品、旅游、住宿、商店、餐馆。
  • RDF是语义的:特别是RDF是自描述的。

SPARQL

  • SPARQL是W3C标准的RDF查询语言.还提出了其他RDF查询语言。 顺便说一句,使用SPARQL查询非RDF源是可能的,例如定义R2RML映射。
  • RDF自定义和SPARQL标准消除了每天创建或学习新的(糟糕的) API的需要。

GraphQL

  • 与SPARQL类似,GraphQL允许避免多个请求。
  • GraphQL允许包装不同类型的不同数据源,但通常它们是REST。 如您所见,包装SPARQL端点的是可能 (也存在HyperGraphQL)。

为什么GraphQL

为什么Datatourisme更喜欢GraphQL?

  • GraphQL更接近于他们大量使用的开发人员和技术。在过去,JSON有着相同的动机(但是,请参阅我关于JSON这里的说明)。
  • 从表面上看,Diffuseur的GraphQL层提供了API密钥支持,并防止了过于复杂的SPARQL查询。

是数据仍然是语义

  • 答案取决于你所说的语义。有意见说,即使关系模型是相当语义的.
  • 如果有可能用评论提取:rcs属性的GraphQL (答案似乎是否定的),我会肯定地回答。

结论

回答你的直接问题:

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

回答你的间接问题:

  • 您可能需要一个语义本体来构建就是这样聊天机器人;
  • 也许你还需要别的东西。

另见:知识是如何用Siri来表达的--是本体论还是其他东西?

更新

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

票数 40
EN

Stack Overflow用户

发布于 2018-04-27 16:56:43

GraphQLSPARQL是用于不同目的的不同语言。SPARQL是一种用于使用三层存储、图形数据集和RDF节点的语言。GraphQL是一种API语言,最好用于使用JSON结构。至于你的具体情况,我建议澄清你在应用程序中使用人工智能的目标。如果需要在应用程序中应用图形数据集,则执行更多先进的知识发现,就像在dataset上进行推理一样,那么您可能需要一种语义Web方法在数据集中应用SPARQL。如下图所示,语义Web通过本体设计和RDF化数据集提供不同的层来执行知识发现、推理。

请参阅这里阅读更多信息。如果您的AI应用程序没有这样的需求,并且您可以使用基于JSON的数据库来完成数据分析,那么GraphQL可能是创建API的一个很好的选择,因为它现在被不同的Web和移动应用程序广泛使用。特别是,它用于通过不同的平台和微服务共享您的数据。有关详细信息,请参阅这里

票数 12
EN

Stack Overflow用户

发布于 2018-04-27 13:52:55

很快,不同之处是:

  • SPARQL (SPARQL协议和RDF查询语言)是一种专门用于查询RDF图形数据库(CRUD等)的语言。它是语义Web工具中的一个标准,由W3C推荐提供。
  • GraphQL是由Facebook创建的一种语言,它强烈地重新封装了JSON,以便与API进行通信。它是客户端和服务器端点之间的通信工具。请求本身定义了答案的结构。它的使用不仅限于SQL或NoSQL或.对于RDF来说,“图”并不意味着“由三元组构成的结构”。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50063202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档