Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview wordt geleverd zonder een service level agreement en wordt niet aanbevolen voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Voor meer informatie, zie Aanvullende Gebruiksvoorwaarden voor Microsoft Azure Previews.
Dit artikel bevat de volledige technische specificatie voor het grafiektype voor sociale netwerken dat in de GQL-documentatie wordt gebruikt. Dit schema demonstreert veel algemene functies van complexe grafieken en fungeert als de basis voor alle queryvoorbeelden in de GQL-taaldocumentatie.
Opmerking
Het sociale netwerk is een voorbeeld dat is afgeleid van de LDBC SNB (LDBC Social Network Benchmark) die is gepubliceerd door de GDC (Graph Data Council). Zie het artikel 'The LDBC Social Network Benchmark' voor meer informatie. Zie een voorbeeld van een sociale netwerkgrafiek dataset voor hoe je een kopie van de afgeleide dataset kunt verkrijgen.
Domeinspecificatie
Het sociale netwerkdomein modelleerde een uitgebreid sociaal platform met de volgende entiteiten:
- Personen met demografische en gedragseigenschappen
- Organisaties , waaronder onderwijsinstellingen (universiteiten) en werkgevers (bedrijven)
- Geografische hiërarchie van steden via landen/regio's naar continenten
- Inhoudssysteem met forums, berichten en discussielijnen in opmerkingen
- Taxonomiesysteem met tags en tagclassificaties
- Sociale en professionele relaties tussen mensen en organisaties
Zie de GQL-taalhandleiding voor een gedetailleerdere inleiding tot de entiteiten van dit domein.
Schemafuncties gedemonstreerd
Dit grafiektype toont geavanceerde GQL-mogelijkheden:
-
Overname van knooppunttypen met abstracte basistypen (
Message,Organization,Place) - Meerdere overnamepatronen met definities van gedeelde eigenschappen
- Edge-typefamilies waarbij hetzelfde relatielabel verschillende combinaties van knooppunttypen verbindt
- Uitgebreid beperkingssysteem dat de gegevensintegriteit garandeert via belangrijke beperkingen
- Gemengde relatiepatronen , waaronder hiërarchische insluiting, sociale verbindingen en interacties met inhoud
Volledige schemadefinitie
Het volgende grafiektype biedt een volledige schemadefinitie in GQL-syntaxis:
(: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)
Schemaanalyse
Hiërarchie van knooppunttype
Het schema definieert drie overnamehiërarchieën:
Geografische hiërarchie:
-
Place(abstract) →City,CountryContinent
Organisatiehiërarchie:
-
Organization(abstract) →University,Company
Inhoudshiërarchie:
-
Message(abstract) →Post,Comment
Edge-typefamilies
Verschillende randlabels vormenfamilies waarmee verschillende knooppuntcombinaties worden verbonden:
Locatierelaties (isPartOf):
- Steden behoren tot landen/regio's:
(:City)-[:isPartOf]->(:Country) - Landen/regio's behoren tot continenten:
(:Country)-[:isPartOf]->(:Continent)
Inhoudsinteracties (likes):
- Personen zoals berichten:
(:Person)-[:likes]->(:Post) - Personen zoals opmerkingen:
(:Person)-[:likes]->(:Comment) - Personen zoals berichten:
(:Person)-[:likes]->(<:Message)
Geografische locatie (isLocatedIn):
- Mensen wonen in steden:
(:Person)-[:isLocatedIn]->(:City) - Universiteiten in steden:
(:University)-[:isLocatedIn]->(:City) - Bedrijven die zich in landen/regio's bevinden:
(:Company)-[:isLocatedIn]->(:Country) - Berichten in landen/regio's:
(:Post)-[:isLocatedIn]->(:Country) - Reacties geplaatst in landen/regio's:
(:Comment)-[:isLocatedIn]->(:Country)
Belangrijke beperkingen
Elk knooppunttype heeft een bijbehorende sleutelbeperking die zorgt voor unieke identificatie per id eigenschap:
-
tag_class_pk, ,tag_pkplace_pk,organization_pk, ,person_pk, ,forum_pkmessage_pk