Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Эта функция сейчас доступна в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения на уровне обслуживания и не рекомендуется для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.
В этой статье приведена полная техническая спецификация для типа графа социальных сетей, используемого в документации по GQL. Эта схема демонстрирует множество распространенных функций сложных графов и служит основой для всех примеров запросов в документации по языку GQL.
Замечание
Социальная сеть является примером, производным от SNB LDBC (LDBC Social Network Benchmark), опубликованного GDC (Graph Data Council). Дополнительные сведения см. в статье "Тест социальной сети LDBC". См. пример набора графов социальных сетей , чтобы узнать, как получить копию производного набора данных.
Спецификация домена
Домен социальной сети моделирует комплексную социальную платформу со следующими сущностями:
- Люди с демографическими и поведенческими свойствами
- Организации , включая учебные заведения (университеты) и работодателей (компании)
- Географическая иерархия из городов через страны или регионы на континенты
- Система содержимого с форумами, записями и потоковыми комментариями
- Система таксономии с классификациями тегов и тегов
- Социальные и профессиональные отношения между людьми и организациями
Дополнительные сведения о сущностях этого домена см. в руководстве по языку GQL.
Показанные функции схемы
Этот тип графа демонстрирует расширенные возможности GQL:
-
Наследование типов узла с помощью абстрактных базовых типов (
Message,Organization,Place) - Несколько шаблонов наследования с определениями общих свойств
- Семейства типов Edge , в которых одна и та же метка связей соединяет различные сочетания типов узлов
- Комплексная система ограничений , обеспечивающая целостность данных с помощью ключевых ограничений
- Шаблоны смешанных связей , включая иерархические соединения, социальные подключения и взаимодействие с содержимым
Полное определение схемы
Следующий тип графа предоставляет полное определение схемы в синтаксисе GQL:
(:TagClass => { id :: UINT64 NOT NULL, name :: STRING, url :: STRING }),
CONSTRAINT tag_class_pk
FOR (n:TagClass) REQUIRE (n.id) IS KEY,
(:TagClass)-[:isSubclassOf]->(:TagClass),
(:Tag => { id :: UINT64 NOT NULL, name :: STRING, url :: STRING }),
(:Tag)-[:hasType]->(:TagClass),
CONSTRAINT tag_pk
FOR (n:Tag) REQUIRE (n.id) IS KEY,
ABSTRACT
(:Place => { id :: UINT64 NOT NULL, name :: STRING, url :: STRING }),
(:City => :Place),
(:Country => :Place),
(:Continent => :Place),
CONSTRAINT place_pk
FOR (n:Place) REQUIRE (n.id) IS KEY,
(:City)-[:isPartOf]->(:Country),
(:Country)-[:isPartOf]->(:Continent),
ABSTRACT
(:Organization => { id :: UINT64 NOT NULL, name :: STRING, url :: STRING }),
(:University => :Organization),
(:Company => :Organization),
CONSTRAINT organization_pk
FOR (n:Organization) REQUIRE (n.id) IS KEY,
(:University)-[:isLocatedIn]->(:City),
(:Company)-[:isLocatedIn]->(:Country),
(:Person => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
firstName :: STRING,
lastName :: STRING,
gender :: STRING,
birthday :: UINT64,
browserUsed :: STRING,
locationIP :: STRING
}),
CONSTRAINT person_pk
FOR (n:Person) REQUIRE (n.id) IS KEY,
(:Person)-[:hasInterest]->(:Tag),
(:Person)-[:isLocatedIn]->(:City),
(:Person)-[:studyAt { classYear :: UINT64 }]->(:University),
(:Person)-[:workAt { workFrom :: UINT64 }]->(:Company),
(:Person)-[:knows { creationDate :: ZONED DATETIME }]->(:Person),
(:Forum => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
title :: STRING
}),
CONSTRAINT forum_pk
FOR (n:Forum) REQUIRE (n.id) IS KEY,
(:Forum)-[:hasTag]->(:Tag),
(:Forum)-[:hasMember { creationDate :: ZONED DATETIME, joinDate :: UINT64 }]->(:Person),
(:Forum)-[:hasModerator]->(:Person),
ABSTRACT (:Message => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
browserUsed :: STRING,
locationIP :: STRING,
content :: STRING,
length :: UINT64
}),
CONSTRAINT message_pk
FOR (n:Message) REQUIRE (n.id) IS KEY,
(:Post => :Message += {
language :: STRING,
imageFile :: STRING
}),
(:Person)-[:likes { creationDate :: ZONED DATETIME }]->(:Post),
(:Post)-[:hasCreator]->(:Person),
(:Post)-[:isLocatedIn]->(:Country),
(:Forum)-[:containerOf]->(:Post),
(:Comment => :Message),
(:Person)-[:likes { creationDate :: ZONED DATETIME }]->(:Comment),
(:Comment)-[:hasCreator]->(:Person),
(:Comment)-[:isLocatedIn]->(:Country),
(:Comment)-[:replyOf]->(<:Message),
(:Person)-[:likes { creationDate :: ZONED DATETIME }]->(<:Message),
(<:Message)-[:hasCreator]->(:Person),
(<:Message)-[:isLocatedIn]->(:Country),
(<:Message)-[:hasTag]->(:Tag)
Анализ схемы
Иерархия типов узлов
Схема определяет три иерархии наследования:
Географическая иерархия:
-
Place(абстракт) →City,CountryContinent
Иерархия организации:
-
Organization(абстрактный) →University,Company
Иерархия содержимого:
-
Message(абстрактный) →Post,Comment
Семейства типов edge
Несколько семейств типов типов форм пограничных меток, соединяющих различные сочетания узлов:
Связи расположения (isPartOf):
- Города относятся к странам и регионам:
(:City)-[:isPartOf]->(:Country) - Страны и регионы относятся к континентам:
(:Country)-[:isPartOf]->(:Continent)
Взаимодействие с содержимым (likes):
- Люди, такие как записи:
(:Person)-[:likes]->(:Post) - Люди, такие как комментарии:
(:Person)-[:likes]->(:Comment) - Люди, такие как сообщения:
(:Person)-[:likes]->(<:Message)
Географическое расположение (isLocatedIn):
- Люди живут в городах:
(:Person)-[:isLocatedIn]->(:City) - Университеты, расположенные в городах:
(:University)-[:isLocatedIn]->(:City) - Компании, расположенные в странах и регионах:
(:Company)-[:isLocatedIn]->(:Country) - Публикации, расположенные в странах/регионах:
(:Post)-[:isLocatedIn]->(:Country) - Комментарии, расположенные в странах/регионах:
(:Comment)-[:isLocatedIn]->(:Country)
Ограничения ключей
Каждый тип узла имеет соответствующее ограничение ключа, обеспечивающее уникальное определение по id свойству:
-
tag_class_pk,tag_pk,place_pkorganization_pkperson_pkforum_pkmessage_pk