graphql - GraphQL 和 SPARQL 有什么区别?

标签 graphql sparql rdf semantic-web ontology

我现在正在对语义 Web 和表示个人和组织之间关系的复杂数据模型进行大量研究。
我知道一点语义本体论,虽然我从来不明白如果不制作图形它是用来做什么的。

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

但是最近我看到一家创建了语义本体的公司把它放在了我不知道的 GraphQL 的形式中( https://diffuseur.datatourisme.gouv.fr/graphql/voyager/ )。

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

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

最佳答案

语境
Datatourisme是一个允许发布(通过 Producteur 组件)和消费(通过 Diffuseur 组件)与 POI 相关的开放数据的平台。
GraphQL Voyager 的帮助下,您似乎已链接到通过 Diffuseur 开发的特定应用程序。 .该应用程序说明了 Diffuseur 公开的 GraphQL API 的功能。
API 文档可在此处获得(法语):

  • datatourisme.frama.io/api
  • framagit.org/datatourisme/api

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

  • 为什么选择 RDF
  • 部分由于一些“无模式”,RDF 在异构数据集成任务中很方便:

    Tourism national ontology structuring in a common sharing format the whole tourism data extracted from different official French data bases: entertainment and events, natural and cultural sites, leisure and sports activities, touristic products, tours, accomodations, shops, restaurants.


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

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

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

  • 为什么使用 GraphQL
    为什么 Datatourisme 更喜欢 GraphQL?
  • GraphQL 更接近于他们集体使用的开发人员和技术。过去,JSON-LD 具有相同的动机(但是,请参阅我关于 JSON-LD here 的说明)。
  • 看起来,Diffuseur 的 GraphQL 层提供 API key 支持并防止过于复杂的 SPARQL 查询。

  • 数据是否仍然语义
  • 答案取决于您所说的语义是什么。有 an opinion甚至关系模型也是相当语义化的......
  • 如果可以提取e,我会肯定地回答。 G。 comment:rcs GraphQL 属性(答案似乎是否定的)。

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

  • 回答你的间接问题:
  • 可能你需要一个语义本体来构建 such聊天机器人;
  • 可能你还需要别的东西。

  • 另见:How is the knowledge represented in Siri – is it an ontology or something else?
    更新
    除了 HyperGraphQL,还有其他有趣的收敛项目:
  • in Stardog
  • in Topbraid
  • in Ontotext Platform
  • 关于graphql - GraphQL 和 SPARQL 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063202/

    相关文章:

    javascript - 如何访问 GraphQL 解析器中的请求对象(使用 Apollo-Server-Express)

    scala - 比较模型的同一性,但与变量?用减号构造?

    sparql - 本体研究 EquivalentTo 来自多个单一类的类

    sparql - 如何使用 SPARQL 查询查找资源的下一个最大值

    java - 如何从 SPARQL 端点获取 RDF 文件?

    java - 如何在给定名称的 Jena TDB 上查询模型

    database - 如何从数据库获取用于Graphql中分页的光标?

    reactjs - 在graphql中实现多个接口(interface)

    javascript - GraphQL、Mysql 等价 OR 运算

    rdf - 确定 DBpedia 资源是城市还是国家