Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Esse recurso está atualmente em versão prévia pública. Essa versão prévia é oferecida sem um SLA e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares para Versões Prévias do Microsoft Azure.
Este artigo fornece a especificação técnica completa para o tipo de grafo de rede social usado em toda a documentação da GQL. Esse esquema demonstra muitos recursos comuns de grafos complexos e serve como base para todos os exemplos de consulta na documentação da linguagem GQL.
Observação
O exemplo da rede social é derivado do LDBC SNB (LDBC Social Network Benchmark) publicado pelo GDC (Graph Data Council). Consulte o artigo "O LDBC Social Network Benchmark" para obter mais detalhes. Veja exemplo de conjunto de dados de grafos de rede social para saber como obter uma cópia do conjunto de dados derivado.
Especificação de 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 educacionais (universidades) e empregadores (empresas)
- Hierarquia geográfica de cidades por países/regiões para continentes
- Sistema de conteúdo com fóruns, postagens e comentários encadeados
- Sistema de taxonomia com marcas e classificações de marca
- Relações sociais e profissionais entre pessoas e organizações
Para obter uma introdução mais detalhada às entidades desse domínio, consulte o guia de linguagem GQL.
Recursos de esquema demonstrados
Este tipo de grafo mostra os recursos avançados da GQL:
-
Herança de tipo de nó usando tipos base abstratos (
Message,Organization,Place) - Vários padrões de herança com definições de propriedade compartilhada
- Famílias de tipo de borda em que o mesmo rótulo de relação conecta diferentes combinações de tipo de nó
- Sistema de restrição abrangente garantindo a integridade dos dados por meio de restrições de chave
- Padrões de relação mistos , incluindo contenção hierárquica, conexões sociais e interações de conteúdo
Definição de esquema completa
O tipo de grafo a seguir 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 tipos de nó
O esquema define três hierarquias de herança:
Hierarquia geográfica:
-
Place(abstrato) →City, ,CountryContinent
Hierarquia organizacional:
-
Organization(abstrato) →University,Company
Hierarquia de conteúdo:
-
Message(abstrato) →Post,Comment
Famílias de tipos de borda
Várias famílias de tipos de formulário de rótulos de borda 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) - Países/regiões pertencem a continentes:
(:Country)-[:isPartOf]->(:Continent)
Interações de conteúdo (likes):
- As pessoas gostam de postagens:
(: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 em 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)
Restrições de chave
Cada tipo de nó tem uma restrição de chave correspondente, garantindo a identificação exclusiva por id propriedade:
-
tag_class_pk,tag_pk,place_pk,organization_pk, ,person_pk,forum_pk,message_pk