Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Note
Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service, et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.
Cet article fournit la spécification technique complète du type de graphique de réseau social utilisé dans la documentation GQL. Ce schéma illustre de nombreuses fonctionnalités courantes de graphiques complexes et sert de base pour tous les exemples de requêtes dans la documentation du langage GQL.
Note
Le réseau social est un exemple dérivé du LDBC SNB (LDBC Social Network Benchmark) publié par le GDC (Graph Data Council). Pour plus d’informations, consultez l’article « The LDBC Social Network Benchmark ». Voir exemple de jeu de données graphiques sur les réseaux sociaux pour savoir comment obtenir une copie du jeu de données dérivé.
Spécification du domaine
Le domaine de réseau social modélise une plateforme sociale complète avec les entités suivantes :
- Personnes ayant des propriétés démographiques et comportementales
- Organisations , y compris les établissements d’enseignement (universités) et les employeurs (entreprises)
- Hiérarchie géographique des villes par le biais de pays/régions vers les continents
- Système de contenu avec des forums, des billets et des commentaires thématiques
- Système de taxonomie avec étiquettes et classifications de balises
- Relations sociales et professionnelles entre les personnes et les organisations
Pour obtenir une présentation plus détaillée des entités de ce domaine, consultez le guide de langage GQL.
Fonctionnalités de schéma illustrées
Ce type de graphique présente les fonctionnalités GQL avancées :
-
Héritage de type de nœud à l’aide de types de base abstraits (
Message,Organization,Place) - Modèles d’héritage multiples avec définitions de propriétés partagées
- Familles de types edge où la même étiquette de relation connecte différentes combinaisons de types de nœuds
- Système de contraintes complet garantissant l’intégrité des données par le biais de contraintes clés
- Modèles de relation mixtes , y compris l’isolement hiérarchique, les connexions sociales et les interactions de contenu
Définition de schéma complète
Le type de graphique suivant fournit une définition de schéma complète dans la syntaxe 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)
Analyse du schéma
Hiérarchie de type de nœud
Le schéma définit trois hiérarchies d’héritage :
Hiérarchie géographique :
-
Place(abstrait) →City,Country,Continent
Hiérarchie organisationnelle :
-
Organization(abstrait) →University,Company
Hiérarchie de contenu :
-
Message(abstrait) →Post,Comment
Familles de types de périphérie
Plusieurs familles de types d’étiquettes de périphérie connectant différentes combinaisons de nœuds :
Relations d’emplacement (isPartOf) :
- Les villes appartiennent à des pays/régions :
(:City)-[:isPartOf]->(:Country) - Les pays/régions appartiennent aux continents :
(:Country)-[:isPartOf]->(:Continent)
Interactions de contenu (likes) :
- Les gens aiment les billets :
(:Person)-[:likes]->(:Post) - Les personnes aiment les commentaires :
(:Person)-[:likes]->(:Comment) - Les personnes aiment les messages :
(:Person)-[:likes]->(<:Message)
Emplacement géographique (isLocatedIn) :
- Les gens vivent dans des villes :
(:Person)-[:isLocatedIn]->(:City) - Universités situées dans les villes :
(:University)-[:isLocatedIn]->(:City) - Entreprises situées dans des pays/régions :
(:Company)-[:isLocatedIn]->(:Country) - Postes dans les pays/régions :
(:Post)-[:isLocatedIn]->(:Country) - Commentaires situés dans les pays/régions :
(:Comment)-[:isLocatedIn]->(:Country)
Contraintes clés
Chaque type de nœud a une contrainte de clé correspondante garantissant une identification unique par id propriété :
-
tag_class_pk,tag_pk, ,place_pkorganization_pk,person_pk, ,forum_pk,message_pk