Язык графовых запросов () — стандартизированный язык запросов для графов свойств, впервые описанный в стандарте ISO/IEC 76120, выпущенном ISO/IEC в апреле 2024.
История Проект языка графовых запросов является итогом различных инициатив, начатых в 2016 году, в том числе предложения от разработчиков СУБД Neo4j другим поставщикам баз данных в июле 2016 года и предложения от технических специалистов компании Oracle в рамках процесса стандартизации ISO/IEC JTC 1, поступившего позднее в том же году.
Предложение проекта GQL 2019 В сентябре 2019 года предложение о проекте по созданию нового стандартного языка графовых запросов (ISO/IEC 39075 Информационные технологии — Языки баз данных — GQL) было одобрено голосованием национальных органов по стандартизации, являющихся членами Объединённого технического комитета ISO/IEC 1 (ISO/IEC JTC 1). JTC 1 отвечает за международные стандарты информационных технологий. GQL задуман как декларативный язык запросов к базам данных наподобие SQL.
В предложении проекта GQL 2019 года говорится:
Официальный стандарт ISO Стандарт GQL, ISO/IEC 39075:2024 «Информационные технологии — Языки баз данных — GQL», был официально опубликован ISO 12 апреля 2024 года.
Организация проекта GQL Проект GQL возглавляют Стефан Плантиков (который был первым ведущим инженером проекта Cypher для Apache Spark, который реализовали разработчики Neo4j) и Стивен Кэннан (технический редактор опечаток SQL). Они также являются редакторами первоначальных ранних рабочих проектов спецификации GQL.
The Existing Languages and the Property Graph Schema working groups formed in late 2018 and early 2019 respectively. A working group to define formal denotational semantics for GQL was proposed at the third GQL Community Update in October 2019.
По первоначальной задумке целью проект GQL было дополнение работы по созданию осуществимой нормативной спецификации естественного языка с помощью усилий сообщества, которые позволяют вносить вклад тем, кто не может или не заинтересован в участии в формальном процессе определения международного стандарта JTC 1. В июле 2019 года Совет по контрольным показателям связанных данных (, LDBC) согласился стать зонтичной организацией для объединения усилий сообщества технических рабочих групп. Рабочие группы по существующим языкам и схеме Property Graph были сформированы в конце 2018 и начале 2019 года соответственно. Рабочая группа для определения формальной для GQL была создана на третьем собрании сообщества GQL в октябре 2019 года.
ISO/IEC JTC 1/SC 32 WG3 Семь национальных органов по стандартизации (США, Китая, Кореи, Нидерландов, Великобритании, Дании и Швеции) назначили национальных экспертов по предметной области для работы над проектом, который реализуется Рабочей группой 3 (Языки баз данных) Подкомитета 32 (Управление данными и обмен ими) ISO/IEC JTC 1, для которого используется аббревиатура ISO/IEC JTC 1/SC 32 WG3 или просто WG3 для краткости. WG3 (и его прямые предшественники — комитеты в составе JTC 1) отвечает за стандарт SQL с 1987 года.
Этапы ИСО Этапы ИСО по датам: 10 сентября 2019: 10.99 Одобрен новый проект 10 сентября 2019: 20.00 Новый проект зарегистрирован в рабочей программе TC/SC 22 ноября 2021: 30.00 Зарегистрирован проектный комитет (ПК) 23 ноября 2021: 30.20 ПК начал исследования 25 февраля 2022: 30.60 Закрытие периода комментариев 29 августа 2022: 30.92 ПК возвращен в Рабочую группу 29 августа 2022: 30.00 Зарегистрирован проектный комитет (ПК) 30 августа 2022: 30.20 ПК начал исследования 26 октября 2022: 30.60 Закрытие периода комментариев 22 марта 2023: 30.99 ПК одобрен для регистрации в качестве черновика международного стандарта 24 марта 2023: 40.00 Черновик международного стандарта зарегистрирован 24 мая 2023: 40.20 Голосование по черновику международного стандарта инициировано: 12 недель 17 августа 2023: 40.60 Закрытие голосования 28 ноября 2023: 40.99 Полный отчет распространён: черновик международного стандарта одобрен для регистрации в качестве окончательного черновика международного стандарта 11 декабря 2023: 50.00 Окончательный текст получен или окончательный черновик международного стандарта зарегистрирован для официального утверждения 26 января 2024: 50.20 Подтверждение отправлено в секретариат или голосование по окончательному черновику международного стандарта инициировано: 8 недель 23 марта 2024: 50.60 Закрытие голосования. Подтверждение возвращено секретариатом 23 марта 2024: 60.00 Международный стандарт в стадии публикации 12 апреля 2024: 60.60 Международный стандарт опубликован
Модель данных графа свойств в GQL GQL — это язык запросов, специально предназначенный для графов свойств. Граф свойств очень похож на концептуальную модель данных, выраженную в модели «сущность-связь» или в диаграмме классов UML (хотя он не включает n-арные связи, связывающие более двух сущностей). Сущности моделируются как узлы, а связи как рёбра в графе. Графы свойств являются мультиграфами: между одной и той же парой узлов может быть много рёбер. Графы GQL могут быть смешанными: они могут содержать направленные рёбра, где один из конечных узлов ребра является хвостом (или источником), а другой узел — головой (или целью, или назначением), но они также могут содержать ненаправленные (двунаправленные или рефлексивные) рёбра.
Узлы и рёбра, совместно известные как элементы, имеют атрибуты. Эти атрибуты могут быть значениями данных или метками (тегами). Значения свойств не могут быть элементами графов, и они не могут быть целыми графами: эти ограничения намеренно заставляют четко разделять топологию графа и атрибуты, содержащие значения данных в контексте топологии графа. Таким образом, модель данных графа свойств намеренно предотвращает вложение графов или обработку узлов в одном графе как рёбер в другом. Каждый граф свойств может иметь набор меток и набор свойств, которые связаны с графом в целом.
Текущие графовые базы данных и проекты таких баз часто поддерживают ограниченную версию модели, описанной здесь. Например, Apache Tinkerpop заставляет каждый узел и каждое ребро иметь одну метку; Cypher позволяет узлам иметь от нуля до многих меток, но отношения имеют только одну метку (называемую reltype). База данных Neo4j поддерживает недокументированные свойства всего графа, Tinkerpop имеет значения графа, которые играют ту же роль, а также поддерживает «метасвойства» или свойства свойств. PGQL от компании Oracle поддерживает от нуля до многих меток на узлах и на рёбрах, тогда как SQL/PGQ поддерживает одну ко многим меток для каждого типа элемента. Информационная модель NGSI-LD, определённая ETSI, представляет собой попытку формального определения графов свойств с типами узлов и связей (рёбер), которые могут играть роль меток в ранее упомянутых моделях и поддерживать семантическую ссылку путём наследования классов, определённых в общих онтологиях.
Проект GQL определит стандартную модель данных, которая, скорее всего, будет надмножеством этих вариантов, и, по крайней мере, первая версия GQL, скорее всего, позволит поставщикам принимать решения о мощностях меток в каждой реализации, как это делает SQL/PGQ, и выбирать, поддерживать ли ненаправленные связи.
Дополнительные аспекты моделей ERM или UML (например, обобщение или подтипирование, или мощности сущностей или связей) могут быть охвачены схемами или типами GQL, которые описывают возможные экземпляры общей модели данных.
Реализации Первая резидентная графовая база данных, которая может интерпретировать GQL, появилась 15.09.2021. Помимо реализации, можно также найти формализацию и прочитать синтаксис определённого подмножества GQL.
Расширение существующих языков графовых запросов Проект GQL опирается на несколько источников, в частности, на существующие промышленные языки и новый раздел стандарта SQL. В подготовительных обсуждениях в WG3 были представлены обзоры истории и сравнительного содержания некоторых из этих источников — Cypher, PGQL и G-Core. GQL — декларативный язык со своим собственным особым синтаксисом, играющим аналогичную SQL роль в построении приложений базы данных. Также существуют и другие языки графовых запросов, которые предлагают прямые процедурные функции, такие как ветвление и зацикливание (Gremlin от Apache Tinkerpop), и GSQL, что позволяет итеративно проходить граф для выполнения класса графовых алгоритмов, но GQL напрямую не включает такие функции. Однако GQL рассматривается как частный случай более общего класса графовых языков, которые будут совместно использовать систему типов графов и интерфейс вызова для процедур, обрабатывающих графы.
См. также Язык моделирования графов GraphQL Обход графа
Примечания
Ссылки Стандарт GQL Документы GQL
Категория:Компьютерные языки Категория:Информационные языки Категория:Стандарты ISO/IEC