web-dev-qa-db-ja.com

GraphQLとSPARQLの違いは何ですか?

現在、セマンティックWebおよび個人と組織間の関係を表す複雑なデータモデルに関する多くの研究を行っています。グラフを作成しない限り、何が使用されているのか理解できませんでしたが、セマンティックオントロジーを少し知っていました。

大学のウィキで、オントロジーを疑問視する言語はSPARQLであると考えました(間違っている場合は教えてください)。

しかし最近、セマンティックオントロジーを作成した会社が、私が知らないGraphQLの形式にした会社を見ました( https://diffuseur.datatourisme.gouv.fr/graphql/voyager/ )。

セマンティック・オントロジーは、たとえばチャットボットを作成するなど、情報を見つけやすくするために作られているようですが(私がやりたいことです)、ここではセマンティック・オントロジーをAPIに変換しました。 GraphQLを作成するには、最初にセマンティックオントロジーを構築する必要がありますか?

これらすべての違いを少し説明していただけますか、正直なところ、私には少しあいまいです。

15
Erwan Pesle

コンテキスト

Datatourisme は、(Producteurコンポーネントを介して)公開し、Diffuseurコンポーネント)POI関連のオープンデータ。

GraphQL Voyager の助けを借りて、Diffuseurで開発された特定のアプリケーションにリンクしているようです。このアプリケーションは、Diffuseurによって公開されたGraphQL APIの機能を示しています。

APIドキュメントはここ(フランス語)から入手できます。

問題

  • Datatourismeは、データをRDF形式で保存します(おそらくBlazegraph triplestoreを使用)
  • Datatourismeは、GraphQL(SPARQLではなく)を介したアクセスを提供します

なぜRDF

  • 一部は「スキーマレス」のため、RDFは異種データ統合タスクで便利です。

    エンターテインメントとイベント、自然と文化のサイト、レジャーとスポーツ活動、観光商品、ツアー、宿泊施設、ショップ、レストランなど、フランスのさまざまな公式データベースから抽出した観光データ全体を共通の共有形式で構築する観光国家オントロジー。

  • RDFはsemantic:特に、RDFは自己記述的です。

[〜#〜] sparql [〜#〜]

  • SPARQLはRDFクエリ用のW3C標準化言語です。他のRDFクエリ言語が提案されました。

    ところで、SPARQLで非RDFソースをクエリすることは可能です。 g。 R2RMLマッピングの定義。

  • RDFの自己記述性とSPARQLの標準性により、毎日新しい(シッティーな)APIを作成または学習する必要がなくなります。

GraphQL

  • SPARQLと同様に、GraphQLでは複数のリクエストを回避できます。
  • GraphQLでは、種類の異なるさまざまなデータソースをラップできますが、通常はREST APIです。

    ご覧のとおり、SPARQLエンドポイントをラップするのは possible です(存在する HyperGraphQL )。

なぜGraphQL

DatatourismeがGraphQLを好むのはなぜですか?

  • GraphQLは、開発者と彼らが一括して使用するテクノロジーにより近いものです。過去に、JSON-LDには同じ動機がありました(ただし、JSON-LDに関する私のメモを参照してください here )。

  • 思われるように、DiffuseurのGraphQLレイヤーはAPIキーをサポートし、複雑すぎるSPARQLクエリを防ぎます。

データはまだセマンティックです

  • 答えは、semanticの意味によって異なります。 意見 リレーショナルモデルでさえ非常に意味論的なものでした...

  • Eを抽出できる場合は、肯定的に答えます。 g。 コメント to :rcsプロパティとGraphQL(および答えは否定的なようです)。

結論

直接の質問に答える:

  • graphQLを使用するために、最初にセマンティックオントロジーを作成する必要はありません(可能ですが)。
  • セマンティックオントロジーの作成後にGraphQLを使用する必要はありません(可能ですが)。

間接的な質問に答える:

  • おそらく such chatbot;を構築するには、セマンティックオントロジーが必要です。
  • おそらく、さらに何かが必要です。

参照: Siri –オントロジーまたは他の何かですか?

更新

HyperGraphQLに加えて、他の興味深い収束プロジェクトがあります。

17

私は数年間セマンティックWebに取り組んできました。 GraphqlおよびSparqlは異なる目的のために異なる言語です。 SPARQLは、トリプルストア、グラフデータセット、およびRDFノード。GraphqlはAPI言語です。できれば[〜#〜] json [〜#〜]構造体を使用してください。特定のケースについては、アプリケーションでのAI:アプリケーションにグラフデータセットを適用する必要がある場合、データセットの推論などのより高度な知識発見を実行し、データセットの上にSPARQLを適用するためにセマンティックWebアプローチが必要になる場合があります。以下の図では、セマンティックWebは、オントロジー設計とRDF化データセットにより、知識発見、推論の実行を行うさまざまなレイヤーを提示しています。

enter image description here

詳しくは here をご覧ください。 AIアプリケーションにそのような要件がなく、JSONベースのデータベースを使用してデータ分析を達成できる場合、Graphqlはおそらく、最近のさまざまなWebおよびモバイルアプリケーションで広く使用されているため、APIの作成に適しています。特に、異なるプラットフォームおよびマイクロサービスを介してデータを共有するために使用されます。詳細については、 here を参照してください。 enter image description here

それが役に立てば幸い!

5
Enayat

すぐに、違いは次のとおりです。

  • SPARQL(SPARQLプロトコルおよびRDF Query Language)は、クエリ専用の言語RDF=グラフデータベース(CRUDなど)。セマンティックWeb内の標準です。 W3C勧告によって提供されるツール。

  • GraphQLはFacebookが作成した言語であり、APIと通信するためにJSONに非常に似ています。これは、クライアントとサーバーエンドポイント間のコミュニケーションツールです。要求は、それ自体で回答の構造を定義します。その使用は、SQLやNoSQLに限定されるものではありません...「グラフ」は、RDFに関して「トリプルで構成された構造」を意味するものではありません。

これらは、アプリケーションごとに異なる2つの言語です。

4

前の回答で言及していなかった非常に重要な違いは、SPARQLは一般的にはより強力なクエリ言語ですが、表形式の出力のみを生成しますが、GraphQLはツリー構造を提供しますが、これはいくつかの実装例で重要です。

2
Ivo Velitchkov