Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Note
Tämä ominaisuus on tällä hetkellä julkisessa esikatselussa. Tämä esikatselu tarjotaan ilman palvelutasosopimusta, eikä sitä suositella tuotantokuormituksiin. Tiettyjä ominaisuuksia ei ehkä tueta tai niiden ominaisuudet voivat olla rajoitettuja. Lisätietoja on artikkelissa Microsoft Azure -esiversioiden lisäkäyttöehdot.
Kaaviomallit ovat GQL-kyselyiden keskeisiä rakenneosia. Ne kuvaavat kaaviosta etsityjä rakenteita käyttämällä solmuja ja reunoja intuitiivisella ja visuaalisella tavalla. Ajattele kaaviomalleja malleina, joita kyselymoduuli yrittää verrata kaavion todellisiin tietoihin.
Tärkeää
Tässä artikkelissa käytetään yksinomaan sosiaalisen verkoston esimerkkikaaviodatasettiä.
Yksinkertaiset elementtimallit
Yksinkertaisten elementtimallien avulla voit yhdistää kaavion yksittäiset solmut ja reunat, jotka täyttävät tietyt vaatimukset. Nämä mallit muodostavat perustan monimutkaisemmalle kuvioiden vastaav sille.
Yksinkertaiset solmumallit
Solmumalli määrittää selitteet ja ominaisuudet, jotka solmun on vastattava:
(:City { name: "New York" })
Tämä malli vastaa kaikkia solmuja, joilla on sekä - että -PlaceCity otsikot (operaattorin osoittama), ja joiden & ominaisuuden name arvo on "New York". Tätä vaadittujen otsikoiden ja ominaisuuksien määritystä kutsutaan solmumallin täytemalliksi .
Avainkäsitteet:
-
Otsikoiden vastaavuus: Käytä
&tätä, jos haluat edellyttää useita otsikoita. - Ominaisuuden suodatus: Määritä tarkat arvot, joita ominaisuuksien on vastattava.
- Joustava ("kovavarianssi")-vastaavuus: Vastaavilla solmuilla voi olla enemmän selitteitä ja ominaisuuksia kuin määritetyillä.
Note
Graafimalleja, joissa on useita elementtimerkintöjä, ei vielä tueta (tunnettu ongelma).
Yksinkertaiset reunamallit
Reunamallit ovat monimutkaisempia kuin solmumallit. Ne paitsi määrittävät täytetoiminnon, myös yhdistävät lähdesolmumallin kohdesolmumalliin. Reunamallit kuvaavat vaatimuksia sekä reunassa että sen päätepisteissä:
(:Person)-[:likes|knows { creationDate: ZONED_DATETIME("2010-08-31T13:16:54Z") }]->(:Comment)
Nuolen suunta -[...]-> on tärkeä – se määritetään (:Person) lähdesolmumalliksi ja (:Comment) kohdesolmumalliksi. Reunan suunnan ymmärtäminen on tärkeää, jotta kaavioon voidaan tehdä kyselyjä oikein.
Vastaava peilattu malli:
Voit kääntää nuolen ja vaihtaa solmukuvioita luodaksesi vastaavan, peilatun reunakuvion:
(:Comment)<-[:likes { creationDate: ZONED_DATETIME("2010-08-31T13:16:54Z") }]-(:Person)
Tämä malli löytää samat suhteet, mutta vastakkaisesta näkökulmasta.
Mihin tahansa kohdistettavat reunamallit
Kun kaavion reunan suunnalla ei ole merkitystä kyselylle, voit jättää sen määrittämättä luomalla mihin tahansa suunnattuun reunamalliin:
(:Song)-[:inspired]-(:Movie)
Tämä malli vastaa samoja reunoja kuin (:Song)-[:inspired]->(:Movie) ja (:Movie)-[:inspired]->(:Song) yhdistetty riippumatta siitä, mikä solmu on lähde ja mikä on kohde (tämä esimerkki ei ole yhteisöpalveluverkon kaaviotyypistä).
Kaavion reunakuvion pikanäppäimet
GQL tarjoaa kätevät pikakuvakkeet yleisiin reunakuvioihin, jotta kyselyistäsi tulee tiiviimpiä:
-
()->()tarkoittaa (()-[]->()suunnatun reunan millä tahansa selitteellä) -
()<-()()<-[]-()tarkoittaa (suunnatun reunan käänteisessä käänteessä minkä tahansa selitteen kanssa) -
()-()tarkoittaa (()-[]-()kaikki suunnatun reunan selitteellä)
Näistä pikakuvakkeista voi olla hyötyä, kun yhteys on sinulle tärkeä, mutta ei tiettyyn kaavion reunatyyppiin.
Otsikkolausekkeet
Patterns voi ilmaista monimutkaisia vaatimuksia vastaavien solmujen ja reunojen otsikoissa.
Esimerkki:
MATCH (:Person|(Organization&!Company))-[:isLocatedIn]->(p:City|Country)
RETURN count(*) AS num_matches
Tämä laskee niiden reunojen määrän isLocatedIn , jotka yhdistävät Person solmuja tai Organization–mutta ei-Company solmuja (jotka ovat aina University yhteisöpalveluverkon rakenteen solmuja) City tai Country solmuihin.
Syntaksi:
| Syntaksi | Merkitys |
|---|---|
A&B |
Otsikoiden on sisällettävä sekä A että B. |
A|B |
Otsikoiden on sisällettävä vähintään yksi A-tai B-merkinnöistä. |
!A |
Otsikoiden on jätettävä A pois. |
Voit lisäksi hallita otsikkolausekkeen arvioinnin järjestystä käyttämällä sulkeita. On oletusarvoisesti ! etusijalla, ja & sen käsittelyjärjestys on suurempi kuin |. Tämän vuoksi !A&B|C|!D se on sama kuin ((!A)&B)|C|(!D).
Sidontamuuttujat
Muuttujien avulla voit viitata vastaaviin kaavion elementteihin kyselyn muissa osissa. Muuttujien sitomisen ja käytön ymmärtäminen on välttämätöntä tehokkaiden kyselyiden luomisen kannalta.
Sidontaelementtimuuttujat
Sekä solmu että reunakuvio voivat sitoa vastaavat solmut ja reunat muuttujiin myöhempää viittausta varten.
(p:Person)-[w:workAt]->(c:Company)
Tässä mallissa p se on sidottu vastaaviin Person solmuihin, w vastaaviin workAt reunojan ja c vastaaviin Company solmuihin.
Rakenteellisten rajoitusten muuttujan uudelleenkäyttö:
Saman muuttujan uudelleenkäyttö mallissa useita kertoja ilmaisee rajoituksen vastaavuudet. Saman muuttujan jokaisen esiintymän on aina sidottava samaan kaavioelementtiin kelvolliksessa. Muuttujien uudelleenkäyttö on tehokas monimutkaisten rakennevaatimusten ilmaisemiseen.
(c:Company)<-[:workAt]-(x:Person)-[:knows]-(y:Person)-[:workAt]->(c:Company)
Malli löytää solmut Person jax, jotka tuntevat toisensa ja toimivat samalla y, joka on sidottu muuttujaan Companyc . Kohteen uudelleenkäyttö c varmistaa, että molemmat henkilöt työskentelevät samassa yrityksessä.
Mallipredikaatit, joissa on elementtimuuttujia:
Sidovan elementin muuttujien avulla voit määrittää solmun ja reunakuvion predikaatit. Sen sijaan, että täytät vain tarkat ominaisuusarvot, kuten { name: "New York, USA" }, täytetoiminto voi määrittää predikaatin, joka arvioidaan kullekin hakijaelementille. Malli vastaa vain, jos predikaatti antaa tulokseksi TRUE:
(p:Person)-[e:knows WHERE e.creationDate >= ZONED_DATETIME("2000-01-01T18:00:00Z")]-(o:Person)
Reunakuvio löytää ihmiset, jotka tunsivat toisensa 1.1.2000 jälkeen käyttämällä joustavaa ehtoa tarkan vastaavuuden sijaan.
Note
Reunakuvion muuttujat sitoutuvat aina reunakuvion predikaatin yksittäiseen reunaan, vaikka käyttäisit vaihtelevan pituisia kuvioita. Tämä voi auttaa sitä, ettei jälkisuodattimen suorittamista tarvitse käyttää poistamatta reunaryhmän luettelomuuttujia. Katso Sido muuttujan pituiset kuvion reunamuuttujat.
Edistyneet mallipredikaattitekniikat:
Mallipredikaatit tarjoavat tehokkaita sisäisen suodatusominaisuuden, jotka voivat parantaa kyselyn luettavuutta:
-- Multiple conditions in node predicates
MATCH (p:Person WHERE p.age > 30 AND p.department = 'Engineering')
-[:workAt]->
(c:Company WHERE c.revenue > 1000000 AND c.location = 'Seattle')
-- Complex edge predicates with calculations
MATCH (p1:Person)-[w:workAt WHERE w.start_date < ZONED_DATETIME('2020-01-01T00:00:00Z')
AND w.salary > 75000]-(c:Company)
-- MATCH WHERE: evaluated after pattern matching
MATCH (p:Person)-[:workAt]->(c:Company)
WHERE p.active = TRUE AND c.public = TRUE
-- Filter during matching and after
MATCH (p:Person WHERE p.department = 'Sales')-[:workAt]->(c:Company)
WHERE p.quota_achievement > 1.2 AND c.revenue > c.revenue_target
Vihje
Mallipredikaattien käyttö silloin, kun olosuhteet ovat hyvin valikoivat, voi pienentää välitulosten kokoa.
Sidontapolkumuuttujat
Voit myös sitoa vastaavan polun polkumuuttujaan jatkokäsittelyä varten tai palauttaa täydellisen polkurakenteen käyttäjälle:
p=(c:Company)<-[:workAt]-(x:Person)-[:knows]-(y:Person)-[:workAt]->(c:Company)
Tässä sidotaan polkuarvoon, p joka edustaa täyttä vastaavuutta polun rakennetta, mukaan lukien viitearvot kaikille solmuille ja reunuksille annetussa järjestyksessä.
Sidotut polut voidaan palauttaa käyttäjälle tai käsitellä edelleen funktioilla kuten NODES tai EDGES:
MATCH p=(c:Company)<-[:workAt]-(x:Person)-[:knows]-(y:Person)-[:workAt]->(c:Company)
LET path_edges = edges(p)
RETURN path_edges, size(path_edges) AS num_edges
GROUP BY path_edges
Laadi malleja
Reaalimaailman kyselyt vaativat usein monimutkaisempia kuvioita kuin yksinkertaiset solmureunan solmurakenteet. GQL tarjoaa useita tapoja luoda kuvioita kehittyneille kaavioiden läpikuluille.
Luo polkumalleja
Polkumallit voidaan muodostaa ketjuttamalla yksinkertaiset solmu- ja reunamallit pidempien läpikulkujen luomiseksi.
(:Person)-[:knows]->(:Person)-[:workAt]->(:Company)-[:isLocatedIn]->(:Country)-[:isPartOf]->(:Continent)
Malli kulkee henkilöltä sosiaalisten ja ammattimaisten yhteyksien kautta löytääkseen, missä hänen työtoverinsa yritys sijaitsee.
Osarakenne: Voit myös kehittää polkumalleja lisäävämmin, mikä voi helpottaa monimutkaisten mallien lukemista ja ymmärtämistä:
(:Person)-[:knows]->(p:Person),
(p:Person)-[:workAt]->(c:Company),
(c:Company)-[:isLocatedIn]->(:Country)-[:isPartOf]->(:Continent)
Tämä menetelmä jakaa saman läpikulun loogisiin vaiheisiin, mikä helpottaa ymmärtämistä ja virheenkorjaustapaa.
Onlinear-mallien laatiminen
Kuvion tuloksena syntyvän muodon ei tarvitse olla lineaarinen polku. Voit yhdistää monimutkaisempia rakenteita, kuten "tähtimuotoisia" kuvioita, jotka säteilevät keskussolmusta:
(p:Person),
(p)-[:studyAt]->(u:University),
(p)-[:workAt]->(c:Company),
(p)-[:likes]-(m)
Tämä malli löytää henkilön koulutuksen, työllisyyden ja sisältömieltymysten ohella kerralla – kattavan profiilikyselyn.
Vastaavuuspolut
Monimutkaisina kuvioina on usein epätoivottua kulkea saman reunan läpi useita kertoja. Reunan uudelleenkäytöstä tulee tärkeää, kun todellinen kaavio sisältää jaksoja, jotka voivat johtaa loputtomiin tai ylipitkiin polkuihin. Microsoft Fabricin kaavio tukee vastaavuustilaa reunan uudelleenkäytön TRAIL käsittelyä varten.
Polun etuliitteenä avainsana TRAIL hylkää kaikki vastaavuudet, jotka sitovat samaa reunaa useita kertoja:
TRAIL (a)-[e1:knows]->(b)-[e2:knows]->(c)-[e3:knows]->(d)
-menetelmän avulla TRAILmalli tuottaa vain vastaavuuksia, joissa kaikki reunat ovat erilaiset. Näin ollen vaikka c = a polku muodostaisi syklin tietyssä vastaavuusottelussa, e3 se ei koskaan sido samaan reunaan kuin e1.
Tila TRAIL on välttämätön loputtomien silmukoiden estämiseksi ja sen varmistamiseksi, että kyselysi palauttavat merkityksellisiä, ei-tietämättömiä polkuja.
Käytä vaihtelevan pituisia kuvioita
Vaihtelevan pituiset mallit ovat tehokkaita rakenteita, joiden avulla voit löytää eri pituisia polkuja kirjoittamatta toistuvia mallimäärityksiä. Ne ovat välttämättömiä hierarkioiden, sosiaalisten verkostojen ja muiden rakenteiden läpiviennissä, joissa optimaalisen polun pituutta ei tiedetä etukäteen.
Rajatut vaihtelevan pituiset mallit
Tärkeää
Rajatut vaihtelevan pituiset mallit tukevat tällä hetkellä vain enimmäisrajaa, joka on 8. Katso artikkelista tämänhetkiset rajoitukset.
Monet yleiset kaaviokyselyt edellyttävät saman reunamallin toistamista useita kertoja. Sen sijaan, että kirjoittaisit yksityiskohtaisia kuvioita, kuten:
(:Person)-[:knows]->(:Person)-[:knows]->(:Person)-[:knows]->(:Person)
Voit käyttää tiiviimpää muuttujan pituista syntaksia:
(:Person)-[:knows]->{3}(:Person)
{3} määrittää, että -[:knows]-> reunakuvio tulee toistaa täsmälleen kolme kertaa.
Joustavat toistoalueet: Joustavuuden lisäämiseksi voit määrittää sekä alarajan että toiston ylärajan:
(:Person)-[:knows]->{1, 3}(:Person)
Tämä malli löytää suorat ystävät, ystävien ystävät ja ystävien ystävät kaikki yhdestä kyselystä.
Note
Alaraja voi olla 0myös . Tässä tapauksessa reunoja ei täsmätä, ja koko malli vastaa vain jos ja vain, jos kaksi päätepisteen solmumallia vastaavat samaa solmua.
Example:
(p1:Person)-[r:knows WHERE NOT p1=p2]->{0,1}(p2:Person)
Tämä kuvio vastaa eri henkilöiden pareja, jotka tuntevat toisensa, mutta myös saman henkilön kanssa sekä p1 että p2 - vaikka kyseinen henkilö ei itse "tietäisi".
Kun alarajaa ei määritetä, sen oletusarvo on yleensä 0 (nolla).
Monimutkaiset muuttuvan pituiset koostumukset: Muuttuvan pituiset kuviot voivat olla osa suurempia ja monimutkaisempia kuvioita, kuten seuraavassa kyselyssä:
MATCH (c1:Comment)<-[:likes]-(p1:Person)-[:knows]-(p2:Person)-[:likes]->(c2:Comment),
(c1:Comment)<-[:replyOf]-{1,3}(m)-[:replyOf]->{1,3}(c2:Comment)
RETURN *
LIMIT 100
Mallissa on kommenttipareja, joissa ihmiset, jotka tuntevat toisensa, pitivät eri kommenteista, ja nämä kommentit on yhdistetty 1–5 tason vastausketjujen kautta.
Sido vaihtelevan pituiset kuvion reunamuuttujat
Kun sidot vaihtelevan pituisen reunamallin, reunamuuttujan arvo ja tyyppi muuttuvat viitekontekstin mukaan. Tämän toiminnan ymmärtäminen on tärkeää vaihtelevan pituisten vastaavuuksien oikeassa käsittelyssä:
Kaksi viiteastetta:
- Vaihtelevan pituisen kuvion sisällä: Graph-reunamuuttujat sitoutuvat kuhunkin yksittäiseen reunaan täsmäytetyllä polulla (kutsutaan myös "yhdentonin viiteasteeksi")
- Vaihtelevan pituisen kuvion ulkopuolella: Kaavion reunamuuttujat sitoutuvat vastaaneen polun kaikkien reunojen järjestykseen (kutsutaan myös "ryhmän viiteasteeksi")
Esimerkki molempien kontekstien esittelemisesta:
MATCH (:Person)-[e:knows WHERE e.creationDate >= ZONED_DATETIME("2000-01-01T00:00:00Z")]->{1,3}()
RETURN e[0]
LIMIT 100
Reunamuuttujan e arviointi tapahtuu kahdessa kontekstissa:
MATCHLausunnossa: Kysely löytää ystävien ja ystävien ystävien ketjuja, joihin jokainen ystävyys on perustettu vuodesta 2000 lähtien. Kuvioiden vastaavuuden aikana reunakuvion predikaattie.creationDate >= ZONED_DATETIME("2000-01-01T00:00:00Z")arvioidaan kerran kunkin hakijareunan kohdalla. Tässä kontekstissaese sidotaan yksittäiseen reunaviittausarvoon.Lausekkeessa
RETURN: Tässä sidotaan (ryhmään) reunaviittausarvojen luettelo siinä järjestyksessä,ejossa ne esiintyvät täsmäytetyssä ketjussa. -tulose[0]on jokaisen täsmäytetun ketjun ensimmäinen reunaviittausarvo.
Muuttuvan pituuskuvion reunamuuttujat vaakasuorassa aggregaatiossa:
Reunamuuttujat, jotka on sidottu muuttuvan pituuden kuvioiden sovittamiseen, ovat ryhmälistoja, jotka ovat muuttuvan pituuskuvion ulkopuolella, ja siksi niitä voidaan käyttää vaakasuoraan aggregaatiossa.
MATCH (a:Person)-[e:knows WHERE e.creationDate >= ZONED_DATETIME("2000-01-01T00:00:00Z")]->{1,3}(b)
RETURN a, b, size(e) AS num_edges
LIMIT 100
Katso osio vaakapohjaisesta aggregaatiosta lisätietoja varten.