GraphQL和SPARQL之间有什么区别?

GraphQL和SPARQL之间有什么区别?,graphql,sparql,rdf,semantic-web,ontology,Graphql,Sparql,Rdf,Semantic Web,Ontology,我现在正在对语义网和表示个人和组织之间关系的复杂数据模型进行大量研究。 我知道一点语义本体论,尽管我从来都不知道如果不制作图形,它会被用在什么地方 我在大学维基上看到,质疑本体论的语言是SPARQL(如果我错了,请告诉我) 但最近,我看到一家公司创建了一个语义本体,并将其以我不知道的GraphQL的形式放置() 在我看来,语义本体是为了更好地查找信息而设计的,例如制作聊天机器人(这就是我想要做的),但在这里,他们将语义本体转换为API,对吗?要创建GraphQL,我应该首先构建语义本体吗 你能给

我现在正在对语义网和表示个人和组织之间关系的复杂数据模型进行大量研究。 我知道一点语义本体论,尽管我从来都不知道如果不制作图形,它会被用在什么地方

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

但最近,我看到一家公司创建了一个语义本体,并将其以我不知道的GraphQL的形式放置()

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


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

很快,区别是:

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

  • GraphQL是Facebook创建的一种语言,它强烈支持JSON与API通信。它是客户端和服务器端点之间的通信工具。请求本身定义了答案的结构。它的使用不限于SQL或NoSQL或。。。 对于RDF,“图形”并不意味着“由三元组组成的结构”


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

GraphQLSPARQL是用于不同目的的不同语言。SPARQL是一种使用三重存储、图形数据集和RDF节点的语言。GraphQL是一种API语言,最好用于处理JSON结构。至于您的具体情况,我建议您澄清在应用程序中使用AI的目标。如果您需要在应用程序中应用图形数据集,请在数据集上执行更高级的知识发现(如推理),然后您可能需要语义Web方法在数据集上应用SPARQL。如下图所示,语义Web通过本体设计和RDF化数据集提供了不同的层来执行知识发现、执行推理

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


上下文

是一个允许发布(通过Producteur组件)和消费(通过Diffuseur组件)POI相关开放数据的平台

似乎您已经在的帮助下链接到了通过Diffuseur开发的特定应用程序。该应用程序演示了Diffuseur公开的GraphQLAPI的功能

API文档可在此处获得(法语):

问题

  • Datatourisme以RDF格式存储数据(可能使用Blazegraph) 三重钻)
  • Datatourisme通过GraphQL(非SPARQL)提供访问
为什么使用RDF

  • 部分原因在于一些“无模式”,RDF在异构数据集成任务中非常方便:

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

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

SPARQL

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

    顺便说一句,可以使用SPARQL查询非RDF源。G定义R2RML映射

  • RDF的自我描述和SPARQL的标准化消除了每天创建或学习一个新的(糟糕的)API的需要

图形ql

  • 与SPARQL类似,GraphQL允许避免多个请求

  • GraphQL允许包装不同类型的不同数据源,但它们通常是RESTAPI

    正如您所看到的,包装SPARQL端点是非常必要的(也存在)

为什么使用图形ql

为什么Datatourisme更喜欢GraphQL

  • GraphQL更接近于开发人员和他们集体使用的技术。在过去,JSON-LD也有同样的动机(不过,请参阅我关于JSON-LD的说明)

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

数据是否仍具有语义

  • 答案取决于你所说的语义。甚至关系模型也有相当的语义性

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

结论

回答你的直接问题:

  • 为了使用GraphQL,没有必要(尽管可能)首先创建语义本体
  • 在创建语义本体之后,没有必要(尽管可能)使用GraphQL
回答你的间接问题:

  • 也许你需要一个语义本体来构建聊天机器人
  • 也许你还需要别的东西
另见:

更新

除了HyperGraphQL,还有其他有趣的