GraphQL和SPARQL有什么区别?

问题描述 投票:20回答:4

我现在正在语义Web和代表个人与组织之间关系的复杂数据模型上进行大量研究。尽管我从不了解如果不制作图形就使用了什么东西,但我了解了一些语义本体。

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

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

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

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

graphql sparql rdf semantic-web ontology
4个回答
24
投票

Context

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

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

API文档在这里(法语):

问题

  • Datatourisme以RDF格式存储数据(大概使用Blazegraph三重店)
  • Datatourisme通过GraphQL提供访问(不是SPARQL)

为什么使用RDF

  • 部分归因于某些“无模式”,RDF在异构数据集成任务中很方便:

    以统一共享格式构建的旅游国家本体,其结构是从不同的官方法国数据库中提取的整个旅游数据:娱乐和活动,自然和文化景点,休闲和体育活动,旅游产品,旅游,住宿,商店,饭店。

  • RDF是semantic:特别是,RDF是自描述的。

SPARQL

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

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

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

GraphQL

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

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

Why GraphQL

为什么Datatourisme首选GraphQL?

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

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

数据仍在语义上

  • 答案取决于语义的意思。 an opinion甚至关系模型也很语义...

  • 如果可以提取e,我会回答。 G。使用GraphQL将comment设置为:rcs属性(并且答案似乎是否定的)。

结论

回答您的直接问题:

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

回答您的间接问题:

  • 可能您需要语义本体才能构建such聊天机器人;
  • 可能您还需要其他东西。

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

更新

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


6
投票

我已经在语义Web上工作了几年。 GraphqlSparql是出于不同目的的不同语言。 SPARQL是一种可用于Triplestore,图形数据集和RDF节点的语言。 Graphql是一种API语言,最好用于JSON结构。至于您的具体情况,我建议您阐明在应用程序中使用AI的目标。如果需要在应用程序中应用图形数据集,对数据集进行推理等更高级的知识发现,则可能需要使用语义Web方法将SPARQL应用于数据集顶部。如您在下面的图片中所看到的,语义Web呈现了不同的层来执行知识发现,执行推理,通过本体设计和RDF大小化数据集。

enter image description here

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

希望有帮助!


5
投票

很快,差异是:

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

  • GraphQL是Facebook创建的一种语言,它强烈地组合了JSON以与API通信。它是客户端和服务器端点之间的通信工具。该请求自己定义了答案的结构。它的使用不限于SQL或NoSQL或...对于RDF,“图”并不表示“由三元组构成的结构”。

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


4
投票

一个非常重要的区别,我在前面的答案中没有提到,是,尽管SPARQL通常是更强大的查询语言,但它仅产生表格输出,而GraphQL提供树结构,这在某些实现中很重要案例。

© www.soinside.com 2019 - 2024. All rights reserved.