В чем разница между GraphQL и SPARQL?

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

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

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

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

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

Кстати, ссылка сейчас не работает. Вы знаете актуальную ссылку?

Stanislav Kralin 24.04.2019 14:24

Привет, можете попробовать: framagit.org/datatourisme/ontology/tree/master

Erwan Pesle 01.05.2019 15:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
28
2
8 021
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Быстро отличия заключаются в следующем:

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

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

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

Здравствуйте, спасибо за ваш ответ. Итак, что мне лучше использовать sparql или graphql для создания моего ИИ? Почему эта компания создала онтологию, а затем graphql? Использовали ли они онтологию для построения логики модели данных, а не graphql, чтобы запросить ее быстрее? Спасибо

Erwan Pesle 27.04.2018 16:11

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

diagram

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

GraphQL diagram

Спасибо, за чат-бота, какую из этих технологий вы бы использовали?

Erwan Pesle 28.04.2018 13:58

На первом рисунке, почему RDF находится выше XML? Означает ли это, что RDF каким-то образом требует XML и не может использоваться без него?

jaco0646 29.04.2018 18:32

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

Enayat 30.04.2018 19:13

@ jaco0646 XML - это в первую очередь формат сериализации, а RDF - в первую очередь модель данных. Другими словами, мы представляем данные в формате XML, в то время как RDF - это более высокий уровень и общий аспект структуры данных (например, каждый объект может быть определен как SUBJECT, OBJECT и PREDICATE). Таким образом, тройки RDF могут быть представлены в различных форматах, таких как черепаха, XML, .... Надеюсь, я смогу хорошо это объяснить! читайте здесь cambridgesemantics.com/blog/semantic-university/learn-rdf/…

Enayat 30.04.2018 19:20

Значит, на картинке XML - это только пример? Он мог сказать «Синтаксис: JSON-LD» и иметь то же значение?

jaco0646 30.04.2018 20:53

@ jaco0646 Да, может быть. Фотография сделана с первой архитектуры SW. Время от времени в архитектуру добавлялось больше представлений данных.

Enayat 30.04.2018 21:27
Ответ принят как подходящий

Контекст

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

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

Документация по 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 - это стандартизированный W3C язык для запросов RDF. Также были предложены другие языки запросов RDF.

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

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

GraphQL

  • Подобно SPARQL, GraphQL позволяет избежать множественных запросов.

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

    Как видите, это возможный для обертывания конечной точки SPARQL (также существует HyperGraphQL).

Почему GraphQL

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

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

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

Данные по-прежнему семантичны?

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

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

Заключение

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

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

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

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

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

Обновлять

Помимо HyperGraphQL, есть и другие интересные проекты конвергенции:

Спасибо за ваш впечатляющий ответ Станислав, Моя цель - помочь гражданам действовать и участвовать в повседневной жизни своего города, поэтому я подумал о создании онтологии для описания экосистемы города (отдельных лиц - организаций) и для IHM, чтобы создать чат-бота, ИИ. Есть ли у вас какие-нибудь советы?

Erwan Pesle 28.04.2018 13:50

@ErwanPesle, к сожалению, я не знаком с этой темой ... Надеюсь, интервью Т. Грубера будет полезно.

Stanislav Kralin 29.04.2018 08:10

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

Спасибо @Ivo за упоминание об этом, вот - случай реализации, когда мне нужно было получить древовидную структуру, я хотел бы знать об этом, прежде чем пытаться сделать это с помощью Sparql.

Bilal 20.02.2019 18:20

@ ivo-velitchkov: запрос sparql СТРОИТЬ создает график на выходе

loic.jaouen 11.03.2019 09:30

Другие вопросы по теме