Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu özellik şu anda genel önizlemededir. Bu önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Grafik desenleri, GQL sorgularınızın temel yapı taşlarıdır. Grafikte aradığınız yapıları, düğümleri ve kenarları sezgisel ve görsel bir şekilde kullanarak açıklar. Grafik desenlerini, sorgu altyapısının grafınızdaki gerçek verilerle eşleştirmeye çalıştığı şablonlar olarak düşünün.
Önemli
Bu makale yalnızca sosyal ağ örnek grafik veri setini kullanmaktadır.
Basit öğe desenleri
Basit öğe desenleri, grafınızdaki belirli gereksinimleri karşılayan tek tek düğümleri ve kenarları eşleştirmenize yardımcı olur. Bu desenler daha karmaşık desen eşleştirme için temel oluşturur.
Basit düğüm desenleri
Düğüm deseni, bir düğümün eşleşmesi gereken etiketleri ve özellikleri belirtir:
(:City { name: "New York" })
Bu düzen, hem vePlace etiketlerine City (işleç tarafından & gösterilir) sahip olan hem de özelliği eşit olan name tüm düğümlerle eşleşir"New York". Gerekli etiketlerin ve özelliklerin bu belirtimi, düğüm deseninin dolgusu olarak adlandırılır.
Temel kavramlar:
-
Etiket eşleştirme: Birden çok etiket gerektirmek için kullanın
&. - Özellik filtreleme: Özelliklerin eşleşmesi gereken tam değerleri belirtin.
- Esnek ("kovaryant") eşleştirme: Eşleşen düğümler, belirtilenlerin ötesinde daha fazla etikete ve özelliğe sahip olabilir.
Uyarı
Çoklu eleman etiketli grafik modelleri henüz desteklenmemektedir (bilinen sorun).
Basit kenar desenleri
Kenar desenleri düğüm desenlerinden daha karmaşıktır. Yalnızca bir dolgu belirtmekle kalmaz, aynı zamanda bir kaynak düğüm desenini hedef düğüm desenine bağlarlar. Kenar desenleri hem kenar hem de uç noktalarındaki gereksinimleri açıklar:
(:Person)-[:likes|knows { creationDate: ZONED_DATETIME("2010-08-31T13:16:54Z") }]->(:Comment)
Ok yönü -[...]-> önemlidir; kaynak düğüm deseni ve (:Person) hedef düğüm deseni olarak belirler(:Comment). Kenar yönünü anlamak, grafınızı doğru sorgulamak için çok önemlidir.
Eşdeğer yansıtılmış desen:
Eşdeğer, yansıtılmış kenar desenini oluşturmak için oku çevirebilir ve düğüm desenlerini değiştirebilirsiniz:
(:Comment)<-[:likes { creationDate: ZONED_DATETIME("2010-08-31T13:16:54Z") }]-(:Person)
Bu desen aynı ilişkileri bulur, ancak karşıt perspektiften.
Herhangi bir yönlendirilmiş kenar deseni
Bir graf kenarının yönü sorgunuz için önemli olmadığında, herhangi bir yönlendirmeli kenar deseni oluşturarak bunu belirtilmemiş olarak bırakabilirsiniz:
(:Song)-[:inspired]-(:Movie)
Bu desen, hangi düğümün kaynak ve (:Song)-[:inspired]->(:Movie) hangi hedef olduğuna bakılmaksızın (bu örnek sosyal ağ graf türünden değildir) ile aynı kenarlarla (:Movie)-[:inspired]->(:Song) eşleşir.
Graf kenar deseni kısayolları
GQL, sorgularınızı daha kısa hale getirmek için yaygın kenar desenleri için kullanışlı kısayollar sağlar:
-
()->()(herhangi bir etiketle yönlendirilmiş kenar) anlamına()-[]->()gelir -
()<-()anlamına()<-[]-()gelir (herhangi bir etiketle ters yönlendirilmiş kenar) -
()-()(herhangi bir etikete sahip herhangi bir yönlendirilmiş kenar) anlamına()-[]-()gelir
Bu kısayollar, bağlantıya önem verdiğinizde ancak belirli graf kenar türüyle ilgilenmediğinizde yararlı olabilir.
Etiket ifadeleri
Desenler, eşleşen düğümlerin ve kenarların etiketlerinde karmaşık gereksinimleri ifade edebilir.
Example:
MATCH (:Person|(Organization&!Company))-[:isLocatedIn]->(p:City|Country)
RETURN count(*) AS num_matches
Bu, düğümleri veya düğümleri (isLocatedInher zaman Person sosyal ağ şemasındaki düğümler olan) veya Organization düğümleri Company bağlayan University kenar sayısını City sayar.Country
Syntax:
| Sözdizimi | Meaning |
|---|---|
A&B |
Etiketlerin hem A hem de B içermesi gerekir. |
A|B |
Etiketlerin A veya B'nin en az birini içermesi gerekir. |
!A |
Etiketlerin A'yı dışlamaları gerekir. |
Ayrıca etiket ifadesi değerlendirme sırasını denetlemek için parantez kullanın. Varsayılan olarak, ! en yüksek önceliğe sahiptir ve & değerinden |daha yüksek önceliğe sahiptir. Bu nedenle !A&B|C|!D ile aynıdır ((!A)&B)|C|(!D).
Değişkenleri bağlama
Değişkenler, sorgunuzun diğer bölümlerindeki eşleşen grafik öğelerine başvurmanıza olanak sağlar. Değişkenleri bağlamayı ve kullanmayı anlamak, güçlü sorgular oluşturmak için gereklidir.
Öğe değişkenlerini bağlama
Hem düğüm hem de kenar desenleri, daha sonra başvurmak üzere eşleşen düğümleri ve kenarları değişkenlere bağlayabilir.
(p:Person)-[w:workAt]->(c:Company)
Bu düzende, p eşleşen düğümlere, Person eşleşen w kenarlara ve workAt eşleşen cCompany düğümlere bağlıdır.
Yapısal kısıtlamalar için değişken yeniden kullanımı:
Aynı değişkenin bir desende birden çok kez yeniden kullanılması, eşleşmelerin yapısı üzerinde bir kısıtlamayı ifade eder. Aynı değişkenin her oluşumu her zaman geçerli bir eşleşmede aynı grafik öğesine bağlanmalıdır. Değişken yeniden kullanımı, karmaşık yapısal gereksinimleri ifade etmek için güçlüdür.
(c:Company)<-[:workAt]-(x:Person)-[:knows]-(y:Person)-[:workAt]->(c:Company)
Desen, birbirini tanıyan düğümleri bulur ve değişkenine Personbağlı olan ile aynı xşekilde çalışır.yCompanyc öğesinin c yeniden kullanılması, her iki kişinin de aynı şirkette çalışmasını sağlar.
Öğe değişkenleriyle desen koşulları:
Öğe değişkenlerini bağlama, düğüm ve kenar deseni koşullarını belirtmenizi sağlar. Bir doldurucu, gibi { name: "New York, USA" }tam özellik değerlerine sahip bir dolgu sağlamak yerine, her aday öğesi için değerlendirilen bir koşul belirtebilir. Desen yalnızca koşul olarak değerlendirilirse eşleşir TRUE:
(p:Person)-[e:knows WHERE e.creationDate >= ZONED_DATETIME("2000-01-01T18:00:00Z")]-(o:Person)
Kenar düzeni, tam eşleşme yerine esnek bir koşul kullanarak 1 Ocak 2000'den bu yana birbirini tanıyan kişileri bulur.
Uyarı
Kenar deseni değişkenleri, değişken uzunluklu desenler kullanılırken bile her zaman kenar deseni koşulunda ayrı kenarlara bağlanır. Bu, filtre sonrası gerçekleştirmek için kenar grubu listesi değişkenlerini en iyi şekilde kullanmak zorunda kalmadan yardımcı olabilir. Bkz . Değişken uzunluklu desen kenar değişkenlerini bağlama.
Gelişmiş desen koşulu teknikleri:
Desen önkoşulları, sorgu okunabilirliğini geliştirebilecek güçlü satır içi filtreleme özellikleri sağlar:
-- 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
Tip
Koşullar yüksek oranda seçici olduğunda desen koşullarının kullanılması, ara sonuçların boyutunu azaltabilir.
Bağlama yolu değişkenleri
Ayrıca, daha fazla işlem yapmak veya kullanıcıya tam yol yapısını döndürmek için eşleşen yolu bir yol değişkenine bağlayabilirsiniz:
p=(c:Company)<-[:workAt]-(x:Person)-[:knows]-(y:Person)-[:workAt]->(c:Company)
Burada, p verilen sırayla tüm düğümler ve kenarlar için başvuru değerleri de dahil olmak üzere tam eşleşen yol yapısını temsil eden bir yol değerine bağlıdır.
Bağlı yollar kullanıcıya geri dönebilir veya aşağıdaki gibi NODESEDGESfonksiyonlarla daha fazla işlenebilir:
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
Desen oluşturma
Gerçek dünyadaki sorgular genellikle basit düğüm-kenar-düğüm yapılarından daha karmaşık desenler gerektirir. GQL, karmaşık graf geçişleri için desen oluşturmanın çeşitli yollarını sağlar.
Yol desenleri oluşturma
Yol desenleri, daha uzun geçişler oluşturmak için basit düğüm ve kenar desenlerinin birleştirilmesiyle oluşturulabilir.
(:Person)-[:knows]->(:Person)-[:workAt]->(:Company)-[:isLocatedIn]->(:Country)-[:isPartOf]->(:Continent)
Desen, bir kişinin sosyal ve profesyonel bağlantıları aracılığıyla bir kişiden geçerek iş arkadaşının şirketinin nerede olduğunu bulur.
Parçalı desen yapısı: Ayrıca, karmaşık desenlerin daha kolay okunmasını ve anlaşılmasını sağlayan yol desenlerini daha artımlı olarak oluşturabilirsiniz:
(:Person)-[:knows]->(p:Person),
(p:Person)-[:workAt]->(c:Company),
(c:Company)-[:isLocatedIn]->(:Country)-[:isPartOf]->(:Continent)
Bu yaklaşım aynı geçişi mantıksal adımlara bölerek anlaşılmasını ve hata ayıklamasını kolaylaştırır.
Doğrusal olmayan desenler oluşturma
Bir desenin elde edilen şeklinin doğrusal bir yol olması gerekmez. Merkezi bir düğümden yayılan "yıldız şeklindeki" desenler gibi daha karmaşık yapıları eşleştirebilirsiniz:
(p:Person),
(p)-[:studyAt]->(u:University),
(p)-[:workAt]->(c:Company),
(p)-[:likes]-(m)
Desen, bir kişiyi eğitim, istihdam ve içerik tercihleriyle birlikte aynı anda bulur; kapsamlı bir profil sorgusu.
İzleri eşleştir
Karmaşık desenlerde, aynı kenardan birden çok kez geçiş yapmak genellikle istenmeyen bir durum olur. Gerçek graf sonsuz veya fazla uzun yollara yol açabilecek döngüler içerdiğinde kenar yeniden kullanımı önemli hale gelir. Kenar yeniden kullanımıyla başa çıkabilmek için Microsoft Fabric'teki graf eşleştirme modunu destekler TRAIL .
Bir yol deseninin anahtar sözcüğüyle TRAIL önek eklenmesi, aynı kenarı birden çok kez bağlayan tüm eşleşmeleri atar:
TRAIL (a)-[e1:knows]->(b)-[e2:knows]->(c)-[e3:knows]->(d)
kullanılarak TRAIL, desen yalnızca tüm kenarların farklı olduğu eşleşmeler üretir. Bu nedenle, yol belirli bir eşleşmede bir döngü oluştursa c = a bile, e3 hiçbir zaman ile e1aynı kenara bağlanmaz.
Mod TRAIL , sonsuz döngüleri önlemek ve sorgularınızın anlamlı, yedekli olmayan yollar döndürmesini sağlamak için gereklidir.
Değişken uzunluklu desenleri kullanma
Değişken uzunluklu desenler, yinelenen desen belirtimleri yazmadan farklı uzunluklarda yollar bulmanıza olanak sağlayan güçlü yapılardır. Bunlar hiyerarşiler, sosyal ağlar ve en uygun yol uzunluğunun önceden bilinmediği diğer yapıların çapraz geçişi için gereklidir.
Sınırlanmış değişken uzunluklu desenler
Önemli
Sınırlanmış değişken uzunluklu desenler şu anda yalnızca en fazla 8 üst sınırını destekler. Geçerli sınırlamalarla ilgili makaleye bakın.
Birçok yaygın grafik sorgusu aynı kenar deseninin birden çok kez yinelenmesi gerekir. Aşağıdaki gibi ayrıntılı desenler yazmak yerine:
(:Person)-[:knows]->(:Person)-[:knows]->(:Person)-[:knows]->(:Person)
Daha kısa değişken uzunluklu söz dizimini kullanabilirsiniz:
(:Person)-[:knows]->{3}(:Person)
, {3} kenar deseninin -[:knows]-> tam olarak üç kez yinelenmesi gerektiğini belirtir.
Esnek yineleme aralıkları: Daha fazla esneklik için yineleme için hem alt sınır hem de üst sınır belirtebilirsiniz:
(:Person)-[:knows]->{1, 3}(:Person)
Bu düzen, tek bir sorguda doğrudan arkadaşları, arkadaş arkadaşlarını ve arkadaş arkadaş arkadaşlarını bulur.
Uyarı
Alt sınır da olabilir 0. Bu durumda hiçbir kenar eşleşmez ve tüm desen yalnızca iki uç nokta düğümü deseninin aynı düğümle eşleşmesi durumunda eşleşir.
Örnek:
(p1:Person)-[r:knows WHERE NOT p1=p2]->{0,1}(p2:Person)
Bu desen, birbirini tanıyan farklı kişi çiftlerini eşleştiriyor ama aynı kişiyi de p1 eşleştiriyor - p2 hatta o kişi kendini "tanımıyor" olsa bile.
Alt sınır belirtilmediğinde genellikle 0 (sıfır) olur.
Karmaşık değişken uzunlukta bileşimler: Değişken uzunluktaki desenler, aşağıdaki sorguda olduğu gibi daha büyük ve karmaşık desenlerin parçası olabilir:
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
Desen, birbirini bilen kişilerin farklı yorumları beğendiği ve bu açıklamaların her biri 1-5 düzeylik yanıt zincirleri aracılığıyla bağlandığı açıklama çiftlerini bulur.
Değişken uzunluklu desen kenar değişkenlerini bağlama
Değişken uzunlukta bir kenar deseni bağladığınızda, kenar değişkeninin değeri ve türü başvuru bağlamı bağlı olarak değişir. Bu davranışı anlamak, değişken uzunluklu eşleşmelerin doğru işlenmesi için çok önemlidir:
İki başvuru derecesi:
- Değişken uzunluklu desenin içinde: Graf kenar değişkenleri, eşleşen yol boyunca her bir kenara bağlanır ("tekil başvuru derecesi" olarak da adlandırılır)
- Değişken uzunluklu desenin dışında: Graf kenar değişkenleri, eşleşen yol boyunca tüm kenarların sırasına bağlanır ("grup başvuru derecesi" olarak da adlandırılır)
Her iki bağlamı da gösteren örnek:
MATCH (:Person)-[e:knows WHERE e.creationDate >= ZONED_DATETIME("2000-01-01T00:00:00Z")]->{1,3}()
RETURN e[0]
LIMIT 100
Uç değişkeninin e değerlendirmesi iki bağlamda gerçekleşir:
Deyiminde
MATCH: Sorgu, 2000 yılından bu yana her arkadaşlığın kurulduğu arkadaş arkadaş zincirlerini bulur. Desen eşleştirme sırasında, her aday kenar için kenar deseni koşulue.creationDate >= ZONED_DATETIME("2000-01-01T00:00:00Z")bir kez değerlendirilir. Bu bağlamda,etek bir kenar başvuru değerine bağlıdır.deyiminde
RETURN: Burada,ebir (grup) uç başvuru değerlerinin eşlenen zincirde gerçekleşen sırasına göre listesine bağlıdır. sonucue[0], eşleşen her zincirdeki ilk kenar başvuru değeridir.
Yatay toplamada değişken uzunlukta desen kenar değişkenleri:
Değişken uzunlukta desen eşleştirmesiyle sınırlanan kenar değişkenleri, değişken uzunluklu desenin dışındaki grup listeleridir ve bu nedenle yatay toplamada kullanılabilirler.
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
Daha fazla detay için yatay toplama bölümüne bakınız.