Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Esta funcionalidade está atualmente em pré-visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
Este artigo fornece a especificação técnica completa para o tipo de gráfico de rede social usado em toda a documentação do GQL. Esse esquema demonstra muitos recursos comuns de gráficos complexos e serve como base para todos os exemplos de consulta na documentação da linguagem GQL.
Observação
A rede social é exemplo é derivado do LDBC SNB (LDBC Social Network Benchmark) publicado pelo GDC (Graph Data Council). Consulte o artigo "The LDBC Social Network Benchmark" para obter mais detalhes. Consulte exemplo de conjunto de dados de grafos de redes sociais para saber como obter uma cópia do conjunto de dados derivado.
Especificação do domínio
O domínio da rede social modela uma plataforma social abrangente com as seguintes entidades:
- Pessoas com propriedades demográficas e comportamentais
- Organizações incluindo instituições de ensino (universidades) e empregadores (empresas)
- Hierarquia geográfica das cidades através dos países/regiões até aos continentes
- Sistema de conteúdo com fóruns, postagens e comentários encadeados
- Sistema de taxonomia com tags e classificações de tags
- Relações sociais e profissionais entre pessoas e organizações
Para obter uma introdução mais detalhada às entidades deste domínio, consulte o guia de linguagem GQL.
Recursos de esquema demonstrados
Este tipo de gráfico apresenta recursos avançados de GQL:
-
Herança de tipo de nó usando tipos de base abstratos (
Message,Organization,Place) - Vários padrões de herança com definições de propriedade compartilhada
- Famílias de tipos de borda em que o mesmo rótulo de relacionamento conecta diferentes combinações de tipos de nó
- Sistema de restrições abrangente que garante a integridade dos dados através de restrições importantes
- Padrões de relacionamento mistos , incluindo contenção hierárquica, conexões sociais e interações de conteúdo
Definição completa do esquema
O seguinte tipo de gráfico fornece uma definição de esquema completa na sintaxe 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)
Análise de esquema
Hierarquia de tipo de nó
O esquema define três hierarquias de herança:
Hierarquia geográfica:
-
Place(resumo) →City,Country,Continent
Hierarquia organizacional:
-
Organization(resumo) →University,Company
Hierarquia de conteúdo:
-
Message(resumo) →Post,Comment
Famílias de tipos de borda
Vários rótulos de borda formam famílias de tipos que conectam diferentes combinações de nós:
Relações de localização (isPartOf):
- As cidades pertencem a países/regiões:
(:City)-[:isPartOf]->(:Country) - Os países/regiões pertencem aos continentes:
(:Country)-[:isPartOf]->(:Continent)
Interações de conteúdo (likes):
- As pessoas gostam de publicações:
(:Person)-[:likes]->(:Post) - As pessoas gostam de comentários:
(:Person)-[:likes]->(:Comment) - As pessoas gostam de mensagens:
(:Person)-[:likes]->(<:Message)
Localização geográfica (isLocatedIn):
- As pessoas vivem nas cidades:
(:Person)-[:isLocatedIn]->(:City) - Universidades localizadas em cidades:
(:University)-[:isLocatedIn]->(:City) - Empresas localizadas em países/regiões:
(:Company)-[:isLocatedIn]->(:Country) - Postos localizados em países/regiões:
(:Post)-[:isLocatedIn]->(:Country) - Comentários localizados em países/regiões:
(:Comment)-[:isLocatedIn]->(:Country)
Principais restrições
Cada tipo de nó tem uma restrição de chave correspondente, garantindo uma identificação exclusiva por id propriedade:
-
tag_class_pk,tag_pk,place_pk,organization_pk,person_pk,forum_pk,message_pk