В чем разница между GraphQL и SPARQL? - PullRequest
0 голосов
/ 27 апреля 2018

Сейчас я провожу много исследований по семантической сети и сложным моделям данных, которые представляют отношения между людьми и организациями. Я знал небольшую семантическую онтологию, хотя никогда не понимал, что она использовала, если не делал графы.

Я видел на вики-сайте университета, что языком, который ставит под сомнение онтологию, является SPARQL (скажите, если я ошибаюсь).

Но недавно я увидел, что компания, которая создала семантическую онтологию, представила ее в виде GraphQL, которого я не знал (https://diffuseur.datatourisme.gouv.fr/graphql/voyager/).

Мне кажется, что семантические онтологии созданы для того, чтобы лучше находить информацию, например, для создания чат-бота (это то, чем я хочу заниматься), но здесь они превратили семантическую онтологию в API, правильно? Чтобы создать GraphQL, я должен сначала построить семантическую онтологию?

Не могли бы вы немного объяснить мне разницу между всем этим, честно говоря, это немного расплывчато для меня.

Ответы [ 4 ]

0 голосов
/ 11 октября 2018

Очень важное отличие, о котором я не упоминал в предыдущих ответах, заключается в том, что, хотя SPARQL в целом является более мощным языком запросов, он выдает только табличный вывод, а GraphQL дает древовидные структуры, что важно в некоторых случаях. случаи реализации.

0 голосов
/ 27 апреля 2018

Я работал над семантической паутиной в течение нескольких лет. Graphql и Sparql - это разные языки для разных целей. SPARQL - это язык для работы с Triple хранилищами , наборами данных графиков и узлами RDF. Graphql - это язык API, предпочтительно для работы со структурами JSON . Что касается вашего конкретного случая, я бы рекомендовал уточнить вашу цель использования ИИ в вашем приложении. Если вам требуется применить набор графических данных в вашем приложении, выполнить более глубокое обнаружение знаний, например, рассуждение о наборе данных, тогда вам может понадобиться подход семантической сети, чтобы применить SPARQL поверх вашего набора данных. Как вы можете видеть на рисунке ниже, в Semantic Web представлены различные уровни для обнаружения знаний, рассуждений с помощью проектирования онтологий и наборов данных RDF-izing.

enter image description here

см. здесь , чтобы узнать больше. Если ваше приложение AI не имеет таких требований, и вы можете выполнить анализ данных с помощью базы данных на основе JSON, Graphql, вероятно, является хорошим выбором для создания вашего API, поскольку в наши дни он широко используется различными веб-приложениями и приложениями для мобильных устройств. В частности, он используется для обмена вашими данными через разные платформы и микросервисы. См. здесь для получения дополнительной информации. enter image description here

Надеюсь, это поможет!

0 голосов
/ 27 апреля 2018

Context

Datatourisme - это платформа, которая позволяет публиковать (через компонент Producteur ) и потреблять (через компонент Diffuseur ) открытые данные, связанные с POI.

Похоже, вы связались с конкретным приложением, разработанным для Diffuseur с помощью GraphQL Voyager . Приложение иллюстрирует возможности API GraphQL, предоставляемого Diffuseur.

Документация по API доступна здесь (на французском языке):

Проблема

  • Datatourisme хранит данные в формате RDF (предположительно, с использованием Blazegraph triplestore)
  • Datatourisme предоставляет доступ через GraphQL (не SPARQL)

Почему RDF

  • Отчасти из-за некоторого «отсутствия схемы» RDF удобен в задачах интеграции разнородных данных:

    Национальная онтология туризма структурирует в общем формате совместного использования все данные о туризме, извлеченные из различных официальных французских баз данных: развлечения и события, природные и культурные объекты, развлекательные и спортивные мероприятия, туристические продукты, туры, проживание, магазины, рестораны.

  • RDF является семантическим : в частности, RDF описывает себя.

SPARQL

  • SPARQL - это стандартизированный W3C язык для запросов RDF. Были также предложены другие языки запросов RDF.

    Кстати, можно запрашивать источники без RDF с помощью SPARQL, e. г. определение отображений R2RML.

  • Самоуверенность RDF и стандартность SPARQL избавляют от необходимости создавать или изучать новый (дерьмовый) API каждый день.

GraphQL

  • Как и в SPARQL, GraphQL позволяет избежать нескольких запросов.
  • GraphQL позволяет оборачивать разные источники данных разных типов, но обычно это API-интерфейсы REST.

    Как видите, возможно обернуть конечную точку SPARQL (также существует HyperGraphQL ).

Почему GraphQL

Почему Datatourisme предпочли GraphQL?

  • GraphQL ближе к разработчикам и технологиям, которые они используют в массовом порядке. В прошлом у JSON-LD была та же мотивация (однако, см. Мою заметку о JSON-LD здесь ).

  • Как представляется, слой GraphQL в Diffuseur обеспечивает поддержку ключей API и предотвращает слишком сложные запросы SPARQL.

Являются ли данные все еще семантическими

  • Ответ зависит от того, что вы подразумеваете под семантическим . Было мнение , что даже реляционная модель довольно семантическая ...

  • Я бы ответил утвердительно, если возможно извлечь e. г. комментарий к свойству :rcs с GraphQL (и ответ кажется отрицательным).

Заключение

Отвечая на ваш прямой вопрос:

  • нет необходимости (хотя и возможно) сначала создавать семантическую онтологию для использования GraphQL;
  • нет необходимости (хотя и возможно) использовать GraphQL после создания семантической онтологии.

Отвечая на ваш косвенный вопрос:

  • вероятно, вам нужна семантическая онтология для построения такого chatbot;
  • вероятно, вам нужно что-то еще в дополнение.

См. Также: Как знание представлено в Сири - это онтология или что-то еще?

Обновление

Помимо HyperGraphQL существуют и другие интересные конвергентные проекты:

0 голосов
/ 27 апреля 2018

Быстро, различия:

  • SPARQL (протокол SPARQL и язык запросов RDF) - это язык, предназначенный для запросов к базам данных RDF-графов (CRUD и другие). Это стандарт в семантических веб-инструментах, предоставляемый Рекомендацией W3C.

  • GraphQL - это язык, созданный Facebook и сильно меняющий JSON для взаимодействия с API. Это инструмент связи между клиентами и конечными точками сервера. Запрос сам определяет структуру ответа. Его использование не ограничивается SQL или NoSQL или ... «График» не означает «конструкцию из тройки», как для RDF.

Это два разных языка для разных приложений.

...