Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Note
Denne funksjonen er for øyeblikket i offentlig forhåndsversjon. Denne forhåndsvisningen leveres uten en tjenesteavtale, og anbefales ikke for produksjonsarbeidsbelastninger. Enkelte funksjoner støttes kanskje ikke eller kan ha begrensede funksjoner. Hvis du vil ha mer informasjon, kan du se Supplerende vilkår for bruk for Microsoft Azure Previews.
Denne artikkelen inneholder den fullstendige tekniske spesifikasjonen for den sosiale nettverksgraftypen som brukes i GQL-dokumentasjonen. Dette skjemaet demonstrerer mange vanlige funksjoner i komplekse grafer og fungerer som grunnlaget for alle spørringseksempler i dokumentasjonen for GQL-språk.
Note
Det sosiale nettverket er eksempel er avledet fra LDBC SNB (LDBC Social Network Benchmark) publisert av GDC (Graph Data Council). Se artikkelen "LDBC Social Network Benchmark" for mer informasjon. Se eksempel på grafdatasett for sosiale nettverk for hvordan du får tak i en kopi av det utledede datasettet.
Domenespesifikasjon
Det sosiale nettverksdomenet modellerer en omfattende sosial plattform med følgende enheter:
- Personer med demografiske egenskaper og atferdsegenskaper
- Organisasjoner inkludert utdanningsinstitusjoner (universiteter) og arbeidsgivere (bedrifter)
- Geografisk hierarki fra byer gjennom land/områder til kontinenter
- Innholdssystem med fora, innlegg og kommentartråder
- Taksonomisystem med koder og kodeklassifiseringer
- Sosiale og profesjonelle relasjoner mellom personer og organisasjoner
Hvis du vil ha en mer detaljert innføring i enhetene i dette domenet, kan du se GQL-språkveiledning.
Skjemafunksjoner demonstrert
Denne graftypen viser avanserte GQL-funksjoner:
-
Nodetypearv ved hjelp av abstrakte basistyper (
Message,Organization,Place) - Flere arvemønstre med delte egenskapsdefinisjoner
- Edge-type familier der samme relasjonsetikett kobler sammen ulike kombinasjoner av nodetype
- Omfattende begrensningssystem som sikrer dataintegritet gjennom viktige begrensninger
- Blandede relasjonsmønstre , inkludert hierarkisk innesperring, sosiale forbindelser og samhandlinger mellom innhold
Fullfør skjemadefinisjon
Følgende graftype gir en fullstendig skjemadefinisjon i GQL-syntaks:
(: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)
Skjemaanalyse
Nodetypehierarki
Skjemaet definerer tre arvehierarkier:
Geografisk hierarki:
-
Place(abstrakt) →City, ,CountryContinent
Organisasjonshierarki:
-
Organization(abstrakt) →University,Company
Innholdshierarki:
-
Message(abstrakt) →Post,Comment
Edge-type familier
Flere kantetiketter skjematype familier som forbinder ulike nodekombinasjoner:
Plasseringsrelasjoner (isPartOf):
- Byer tilhører land/områder:
(:City)-[:isPartOf]->(:Country) - Land/områder tilhører kontinenter:
(:Country)-[:isPartOf]->(:Continent)
Innholdssamhandlinger (likes):
- Personer liker innlegg:
(:Person)-[:likes]->(:Post) - Personer liker kommentarer:
(:Person)-[:likes]->(:Comment) - Personer liker meldinger:
(:Person)-[:likes]->(<:Message)
Geografisk plassering (isLocatedIn):
- Folk bor i byer:
(:Person)-[:isLocatedIn]->(:City) - Universiteter i byer:
(:University)-[:isLocatedIn]->(:City) - Selskaper som befinner seg i land/områder:
(:Company)-[:isLocatedIn]->(:Country) - Stillinger plassert i land/regioner:
(:Post)-[:isLocatedIn]->(:Country) - Kommentarer plassert i land/regioner:
(:Comment)-[:isLocatedIn]->(:Country)
Nøkkelbetingelser
Hver nodetype har en tilsvarende nøkkelbetingelse som sikrer unik identifikasjon etter id egenskap:
-
tag_class_pk,tag_pk,place_pk,organization_pk,person_pk,forum_pkmessage_pk