Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Замечание
Эта функция сейчас доступна в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения на уровне обслуживания и не рекомендуется для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий 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