Aracılığıyla paylaş


Azure Digital Twins sorgu dili başvurusu: MATCH yan tümcesi

Bu belge, Azure Digital Twins sorgu dilinin MATCH yan tümcesine ilişkin başvuru bilgilerini içerir.

MATCH yan tümcesi, FROM yan tümcesinin bir parçası olarak Azure Digital Twins sorgu dilinde kullanılır. MATCH , Azure Digital Twins grafında ilişkiler arasında geçiş yaparken hangi desenin izlenmesi gerektiğini belirtmenize olanak tanır (bu, "değişken atlama" sorgu deseni olarak da bilinir).

Sorgu sırasında bu yan tümce isteğe bağlıdır.

Çekirdek söz dizimi: KAÇINCI

MATCH , belirli ilişki koşullarına bağlı olarak atlama aralığındaki ikizler arasında yol bulan tüm sorguları destekler.

İlişki koşulu aşağıdaki ayrıntılardan birini veya daha fazlasını içerebilir:

Yan tümcesi olan bir MATCH sorgu, başvuruda bulunduğu ikizlerden en az birinin belirtilmesi $dtId için WHERE yan tümcesini de kullanmalıdır.

Not

MATCH , sorgu deposunda gerçekleştirilebilecek tüm JOIN sorguların üst kümesidir.

Sözdizimi

Temel söz dizimi aşağıdadır MATCH .

Bu yer tutucuları içerir:

  • twin_or_twin_collection (x2): Yan tümcesi MATCH tek bir ikizi temsil etmek için bir işlenen gerektirir. Diğer işlenen başka bir tek ikizi veya bir ikiz koleksiyonunu temsil edebilir.
  • relationship_condition: Bu alanda, ikizler veya ikiz koleksiyonları arasındaki ilişkiyi açıklayan bir koşul tanımlayın. Koşul ilişki yönünü belirtebilir, ilişki adını belirtebilir, atlama sayısını belirtebilir, ilişki özelliklerini belirtebilir veya bu seçeneklerin herhangi bir bileşimini belirtebilir.
  • twin_ID: Burada, işlenenlerden birinin tek bir $dtId ikizi temsil edebilmesi için ikiz koleksiyonlarından birinin içinde bir belirtin.
--SELECT ... FROM ...  
MATCH (twin_or_twin_collection_1)-[relationship_condition]-(twin_or_twin_collection_2)
WHERE twin_or_twin_collection.$dtId = 'twin_ID' 
-- AND ...

Herhangi bir ikizin bu noktada çalışmasına izin vermek için ikiz koleksiyonlarından birini boş bırakabilirsiniz.

Ayrıca, birden çok zincirleme ilişki koşuluna veya hiçbir ilişki koşuluna sahip olmak için ilişki koşullarının sayısını değiştirebilirsiniz:

--Chained relationship conditions
-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)-[relationship_condition]-(twin_or_twin_collection_2)-[relationship_condition]-(twin_or_twin_collection_3)...
WHERE twin_or_twin_collection.$dtId = 'twin_ID'
-- No relationship condition
-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)
WHERE twin_or_twin_collection.$dtId = 'twin_ID'

İlişki koşulunun her türü ve bunların nasıl birleştirildiği hakkında daha fazla bilgi için bu belgenin diğer bölümlerine bakın.

Örnek

Burada kullanan örnek bir sorgu verilmiştir MATCH.

Sorgu bir ilişki yönü belirtir ve Yapı ve Algılayıcı ikizlerini arar.

  • Algılayıcı, Bina21'i olan bir Bina ikizinden gelen herhangi bir $dtId ilişki tarafından hedeflenmiştir ve
  • Algılayıcının sıcaklığı 50'nin üzerindedir. Hem Bina hem de Algılayıcı sorgu sonucuna dahil edilir.
SELECT Building, Sensor FROM DIGITALTWINS 
MATCH (Building)-[]->(Sensor) 
WHERE Building.$dtId = 'Building21' AND Sensor.temperature > 50

İlişki yönünü belirtme

İkizler arasında bir ilişki yönü belirtmek için yan tümcesindeki MATCH ilişki koşulunu kullanın. Olası yönler soldan sağa, sağdan sola veya yönlü olmayan yönlerdendir. Döngüsel ilişkiler otomatik olarak algılanır, böylece bir ilişki yalnızca bir kez geçirilir.

Not

Zincirleme kullanarak çift yönlü ilişkileri temsil etmek mümkündür.

Sözdizimi

Not

Bu bölümdeki örnekler ilişki yönüne odaklanır. İlişki adlarını belirtmez, varsayılan olarak tek bir atlama olarak ayarlanır ve ilişkilere sorgu değişkenleri atamaz. Bu diğer koşullarla daha fazlasını yapma yönergeleri için bkz . İlişki adını belirtme, Atlama sayısını belirtme ve İlişkiye sorgu değişkeni atama. Bunların birkaçını aynı sorguda birlikte kullanma hakkında bilgi için bkz . KAÇINCI işlemlerini birleştirme.

Yönlü ilişki açıklamaları, ilişkinin yönünü belirtmek için bir okun görsel gösterimini kullanır. Ok, isteğe bağlı bir ilişki adı için köşeli ayraç ([]) ile ayrılmış bir boşluk içerir.

Bu bölümde, ilişkilerin farklı yönleri için söz dizimi gösterilir. Değerlerinizle değiştirilmesi gereken yer tutucu değerleri ve target_twin_or_twin_collectionşeklindedirsource_twin_or_twin_collection.

Soldan sağa ilişki için aşağıdaki söz dizimini kullanın.

-- SELECT ... FROM ...
MATCH (source_twin_or_twin_collection)-[]->(target_twin_or_twin_collection)
-- WHERE ...

Sağdan sola ilişki için aşağıdaki söz dizimini kullanın.

-- SELECT ... FROM ...
MATCH (target_twin_or_twin_collection)<-[]-(source_twin_or_twin_collection)
-- WHERE ...

Yönlü olmayan bir ilişki için aşağıdaki söz dizimini kullanın. Bu, ilişki için bir yön belirtmez, bu nedenle herhangi bir yöndeki ilişkiler sonuçta eklenir.

-- SELECT ... FROM ...
MATCH (source_twin_or_twin_collection)-[]-(target_twin_or_twin_collection)
-- WHERE ...

İpucu

Yönlü olmayan sorgular ek işleme gerektirir ve bu da gecikme süresi ve maliyetin artmasına neden olabilir.

Örnekler

İlk örnekte soldan sağa yönlü dolaşma gösterilmektedir. Bu sorgu İkizler Oda ve Fabrika bulur nerede...

  • Room targets Factory (herhangi bir ilişki adıyla)
  • Oda 50'den büyük bir sıcaklık değerine sahiptir
  • Fabrika ' $dtId ABC'
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)-[]->(Factory) 
WHERE Room.temperature > 50 AND Factory.$dtId = 'ABC'

Not

MATCH geçişi için başlangıç ikizi dışında herhangi bir ikizde filtre içeren $dtId MATCH sorguları boş sonuçlar gösterebilir. Bu, yukarıdaki örnekte geçerlidir factory.$dtId . Daha fazla bilgi için bkz . Sınırlamalar.

Aşağıdaki örnekte sağdan sola yönlü geçiş gösterilmektedir. Bu sorgu yukarıdakine benzer, ancak Room ile Factory arasındaki ilişkinin yönü tersine çevrilir. Bu sorgu İkizler Oda ve Fabrika bulur nerede...

  • Fabrika hedefi Oda (herhangi bir ilişki adıyla)
  • Fabrika ' $dtId ABC'
  • Oda 50'den büyük bir sıcaklık değerine sahiptir
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)<-[]-(Factory) 
WHERE Factory.$dtId = 'ABC' AND Room.temperature > 50

Aşağıdaki örnekte, yönlü olmayan bir geçiş gösterilmektedir. Bu sorgu İkizler Oda ve Fabrika bulur nerede...

  • Oda ve Fabrika, her iki yönde de devam eden herhangi bir ilişki adını paylaşır
  • Fabrika ' $dtId ABC'
  • Oda 70'ten büyük bir nem değerine sahiptir
SELECT Factory, Room FROM DIGITALTWINS MATCH (Factory)-[]-(Room) 
WHERE Factory.$dtId ='ABC'  AND Room.humidity > 70

İlişki adını belirtin

İsteğe bağlı olarak, yan tümcesindeki ilişki koşulunu MATCH kullanarak ikizler arasındaki ilişkilerin adlarını belirtebilirsiniz. Tek bir ad veya olası adların listesini belirtebilirsiniz. İsteğe bağlı ilişki adı, ilişki yönünü belirtmek için ok söz diziminin bir parçası olarak eklenir.

bir ilişki adı sağlamazsanız, sorgu varsayılan olarak tüm ilişki adlarını içerir.

İpucu

Sorguda ilişki adlarının belirtilmesi performansı geliştirebilir ve sonuçları daha öngörülebilir hale getirir.

Sözdizimi

Not

Bu bölümdeki örnekler ilişki adına odaklanır. Hepsi yönlü olmayan ilişkileri gösterir, varsayılan olarak tek bir atlama kullanır ve ilişkilere sorgu değişkenleri atamaz. Bu diğer koşullarla daha fazlasını yapma yönergeleri için bkz . İlişki yönünü belirtme, Atlama sayısını belirtme ve İlişkiye sorgu değişkeni atama. Bunların birkaçını aynı sorguda birlikte kullanma hakkında bilgi için bkz . KAÇINCI işlemlerini birleştirme.

Köşeli ayraçlar ()[] içinde yan tümcesinde MATCH çapraz geçiş için bir ilişkinin adını iki nokta üst üste (: sonra) belirtin. Bu bölümde, adlandırılmış ilişkileri belirtmenin söz dizimi gösterilir.

Tek bir ad için aşağıdaki söz dizimini kullanın. Değerlerinizle değiştirilmesi gereken yer tutucu değerleri , relationship_nameve twin_or_twin_collection_2şeklindedirtwin_or_twin_collection_1.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[:relationship_name]-(twin_or_twin_collection_2)
-- WHERE ...

Birden çok olası ad için aşağıdaki söz dizimini kullanın. Değerlerinizle değiştirilmesi gereken yer tutucu değerleri , , relationship_name_option_1relationship_name_option_2, twin_or_twin_collection_2ve notlarıdır twin_or_twin_collection_1ve girmek istediğiniz ilişki adı sayısı için desene gerektiği gibi devam etmek için not olur.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[:relationship_name_option_1|relationship_name_option_2|continue pattern as needed...]-(twin_or_twin_collection_2)
-- WHERE ...

Önemli

Köşeli ayraçların içindeki iki nokta üst üste (:), sorguda ilişki adı belirtmek için söz diziminin gerekli bir MATCH parçasıdır. İki nokta üst üste eklemezseniz, sorgunuz bir ilişki adı belirtmez. Bunun yerine, ilişkiye bir sorgu değişkeni atayan bir sorgunuz vardır.

(Varsayılan) Adı belirtilmemiş olarak bırakmak için köşeli ayraçları ad bilgilerinden boş bırakın, örneğin:

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[]-(twin_or_twin_collection_2)
-- WHERE ...

Örnekler

Aşağıdaki örnekte tek bir ilişki adı gösterilmektedir. Bu sorgu, yapı ve algılayıcı ikizlerini bulur.

  • Bina, Algılayıcı ile 'içerir' ilişkisine sahiptir (her iki yönde de devam eden)
  • Bina ' $dtId Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building)-[:contains]-(Sensor)  
WHERE Building.$dtId = 'Seattle21'

Aşağıdaki örnekte birden çok olası ilişki adı gösterilmektedir. Bu sorgu yukarıdakine benzer, ancak sonuçta yer alan birden çok olası ilişki adı vardır. Bu sorgu, yapı ve algılayıcı ikizlerini bulur.

  • Bina, Algılayıcı ile 'contains' veya 'isAssociatedWith' ilişkisine sahiptir (iki yönde de devam eder)
  • Bina ' $dtId Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building)-[:contains|isAssociatedWith]-(Sensor)  
WHERE building.$dtId = 'Seattle21'

Aşağıdaki örnekte belirtilen ilişki adı yok. Sonuç olarak, herhangi bir adla ilişkiler sorgu sonucuna eklenir. Bu sorgu, yapı ve algılayıcı ikizlerini bulur.

  • Bina, Algılayıcı ile herhangi bir ada sahip bir ilişkiye sahiptir (ve her iki yönde de devam edecek)
  • Bina ' $dtId Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building-[]-(Sensor)  
WHERE Building.$dtId = 'Seattle21'

Atlama sayısını belirtme

İsteğe bağlı olarak, yan tümcesindeki ilişki koşulunu MATCH kullanarak ikizler arasındaki ilişkilerin atlama sayısını belirtebilirsiniz. Tam bir sayı veya aralık belirtebilirsiniz. bu isteğe bağlı değer, ilişki yönünü belirtmek için ok söz diziminin bir parçası olarak eklenir.

Bir dizi atlama sağlamazsanız, sorgu varsayılan olarak bir atlama olur.

Önemli

Birden fazla atlama belirtirseniz, ilişkiye bir sorgu değişkeni atayamazsınız. Bu koşullardan yalnızca biri aynı sorgu içinde kullanılabilir.

Sözdizimi

Not

Bu bölümdeki örnekler atlama sayısına odaklanır. Bunların tümü, ad belirtmeden yönlü olmayan ilişkileri gösterir. Bu diğer koşullarla daha fazlasını yapma yönergeleri için bkz . İlişki yönünü belirtme ve İlişki adını belirtme. Bunların birkaçını aynı sorguda birlikte kullanma hakkında bilgi için bkz . KAÇINCI işlemlerini birleştirme.

Köşeli ayraçlar ([]) içindeki yan tümcesinde MATCH çapraz geçiş için atlama sayısını belirtin.

Tam atlama sayısını belirtmek için aşağıdaki söz dizimini kullanın. Değerlerinizle değiştirilmesi gereken yer tutucu değerleri , number_of_hopsve twin_or_twin_collection_2şeklindedirtwin_or_twin_collection_1.

-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)-[*number_of_hops]-(twin_or_twin_collection_2)
-- WHERE ...

Atlama aralığını belirtmek için aşağıdaki söz dizimini kullanın. Değerlerinizle değiştirilmesi gereken yer tutucu değerleri , starting_limitending_limit ve twin_or_twin_collection_2şeklindedirtwin_or_twin_collection_1. Başlangıç sınırı, bitiş sınırı dahil edilirken aralığa dahil değildir.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[*starting_limit..ending_limit]-(twin_or_twin_collection_2)
-- WHERE ...

Ayrıca bitiş sınırını "en fazla olan her şeyi" (ve dahil) belirtmek için başlangıç sınırını dışarıda bırakabilirsiniz. Her zaman bir bitiş sınırı sağlanmalıdır.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[*..ending_limit]-(twin_or_twin_collection_2)
-- WHERE ...

(Varsayılan) Varsayılan olarak bir atlama olarak, köşeli ayraçları atlama bilgilerinden boş bırakın, örneğin:

-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)-[]-(twin_or_twin_collection_2)
-- WHERE ...

Örnekler

Aşağıdaki örnek tam atlama sayısını belirtir. Sorgu yalnızca ikizler Floor ve Room arasında tam olarak 3 atlamalı ilişkiler döndürür.

SELECT Floor, Room FROM DIGITALTWINS 
MATCH (Floor)-[*3]-(Room)
WHERE Floor.$dtId = 'thermostat-15'

Aşağıdaki örnek bir atlama aralığını belirtir. Sorgu, ikizler Floor ve Room arasında 1 ile 3 atlama (atlama sayısının 2 veya 3 olduğu anlamına gelir) arasındaki ilişkileri döndürür.

SELECT Floor, Room FROM DIGITALTWINS 
MATCH (Floor)-[*1..3]-(Room)
WHERE Floor.$dtId = 'thermostat-15'

Ayrıca, yalnızca bir sınır sağlayarak bir aralığı gösterebilirsiniz. Aşağıdaki örnekte sorgu, floor ve room ikizleri arasında en fazla 2 atlama (atlama sayısı 1 veya 2 anlamına gelir) arasındaki ilişkileri döndürür.

SELECT Floor, Room FROM DIGITALTWINS 
MATCH (Floor)-[*..2]-(Room)
WHERE Floor.$dtId = 'thermostat-15'

Aşağıdaki örnekte belirtilen sayıda atlama olmadığından, ikizler Floor ve Room arasında varsayılan olarak bir atlama olur.

SELECT Floor, Room FROM DIGITALTWINS  
MATCH (Floor)-[]-(Room)
WHERE Floor.$dtId = 'thermostat-15'

İlişkiye sorgu değişkeni atama (ve ilişki özelliklerini belirtme)

İsteğe bağlı olarak, sorgu değişkenine sorgu metninde ada göre başvurabilmek için yan tümcesinde MATCH başvuruda bulunan ilişkiye atayabilirsiniz.

Bunu yapmanın yararlı bir sonucu, yan tümcenizdeki WHERE ilişki özelliklerine filtre uygulama yeteneğidir.

Önemli

İlişkiye bir sorgu değişkeni atamak yalnızca sorgu tek bir atlama belirttiğinde desteklenir. Sorguda, ilişki değişkeni belirtme ve daha fazla atlama belirtme arasında seçim yapmanız gerekir.

Sözdizimi

Not

Bu bölümdeki örnekler, ilişkinin sorgu değişkenine odaklanır. Bunların tümü, ad belirtmeden yönlü olmayan ilişkileri gösterir. Bu diğer koşullarla daha fazlasını yapma yönergeleri için bkz . İlişki yönünü belirtme ve İlişki adını belirtme. Bunların birkaçını aynı sorguda birlikte kullanma hakkında bilgi için bkz . KAÇINCI işlemlerini birleştirme.

İlişkiye bir sorgu değişkeni atamak için değişken adını köşeli ayraçlara ([] ) yerleştirin. Aşağıda gösterilen ve değerlerinizle değiştirilmesi gereken yer tutucu değerleri , relationship_variableve twin_or_twin_collection_2şeklindedirtwin_or_twin_collection_1.

-- SELECT ... FROM ...   
MATCH (twin_or_twin_collection_1)-[relationship_variable]-(twin_or_twin_collection_2>) 
-- WHERE ...

Örnekler

Aşağıdaki örnekte ilişkiye bir 'Rel' sorgu değişkeni atanır. Daha sonra yan tümcesinde WHERE , Rel ilişkisinin 'child' değerine sahip bir ad özelliğine sahip olması gerektiğini belirtmek için değişkenini kullanır.

SELECT Floor,Cafe, Rel DIGITALTWINS   
MATCH (Floor)-[Rel]-(Cafe)  
WHERE Floor.$dtId = 'thermostat-15' AND Rel.name = 'child'

KAÇINCI işlemlerini birleştirme

Aynı sorguda birden çok ilişki koşulunu birleştirebilirsiniz. Ayrıca, çift yönlü ilişkileri veya diğer daha büyük birleşimleri ifade etmek için birden çok ilişki koşulunu zincirleyebilirsiniz.

Sözdizimi

Tek bir sorguda ilişki yönünü, ilişki adını ve atlama sayısı veya sorgu değişkeni atamalarından birini birleştirebilirsiniz.

Aşağıdaki söz dizimi örnekleri, bu özniteliklerin nasıl birleştirilebileceğini gösterir. Ayrıca, koşulun bu bölümünü atlayan yer tutucularda gösterilen isteğe bağlı ayrıntıların herhangi birini de dışarıda bırakabilirsiniz.

Tek bir sorguda ilişki yönünü, ilişki adını ve atlama sayısını belirtmek için, ilişki koşulu içinde aşağıdaki söz dizimini kullanın. Değerlerinizle değiştirilmesi gereken yer tutucu değerleri ve twin_or_twin_collection_1 , twin_or_twin_collection_2optional_left_angle_bracket ve optional_right_angle_bracket, relationship_name(s)ve number_of_hopsolur.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)optional_left_angle_bracket-[:relationship_name(s)*number_of_hops]-optional_right_angle_bracket(twin_or_twin_collection_2)
-- WHERE

Tek bir sorgudaki ilişkinin ilişki yönünü, ilişki adını ve sorgu değişkenini belirtmek için, ilişki koşulu içinde aşağıdaki söz dizimini kullanın. Değerlerinizle değiştirilmesi gereken yer tutucu değerleri ve twin_or_twin_collection_1 , twin_or_twin_collection_2optional_left_angle_bracket ve optional_right_angle_bracket, relationship_variableve relationship_name(s)olur.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)optional_left_angle_bracket-[relationship_variable:relationship_name(s)]-optional_right_angle_bracket(twin_or_twin_collection_2)
-- WHERE

Not

İlişki yönünü belirtme seçeneklerine göre, soldan sağa ilişki için sol açılı ayraç veya sağdan sola ilişki için sağ açılı ayraç arasında seçim yapmak gerekir. Her ikisini de aynı oka ekleyemezsiniz, ancak zincirleme yoluyla çift yönlü ilişkileri temsil edebilirsiniz.

Bunun gibi birden çok ilişki koşullarını birbirine zincirleyebilirsiniz. Değerleriniz ile değiştirilmesi gereken yer tutucu değerleri, tüm , ve örnekleridirtwin_or_twin_collection_1relationship_condition.twin_or_twin_collection_2

--Chained relationship conditions
-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)-[relationship_condition]-(twin_or_twin_collection_2)-[relationship_condition]-(twin_or_twin_collection_3)...
WHERE twin_or_twin_collection.$dtId = 'twin_ID'

Örnekler

İlişki yönü, ilişki adı ve atlama sayısını birleştiren bir örnek aşağıda verilmiştir. Aşağıdaki sorgu, Floor ve Room arasındaki ilişkinin şu koşulları karşıladığı floor ve room ikizlerini bulur:

  • ilişki soldan sağa, floor kaynak ve Oda hedef olarak
  • ilişkinin adı 'contains' veya 'isAssociatedWith'
  • İlişkide 4 veya 5 atlama var

Sorgu ayrıca ikiz Floor değerinin $dtId 'thermostat-15' olduğunu belirtir.

SELECT Floor, Room FROM DIGITALTWINS    
MATCH (Floor)-[:contains|isAssociatedWith*3..5]->(Room) 
WHERE Floor.$dtId = 'thermostat-15'

İlişkinin yönü, ilişki adı ve adlandırılmış sorgu değişkenini birleştiren bir örnek aşağıda verilmiştir. Aşağıdaki sorgu, Floor ve Room arasındaki ilişkinin bir sorgu değişkenine r atandığı ve bu koşulları karşıladığı floor ve room ikizlerini bulur:

  • ilişki soldan sağa, floor kaynak ve Oda hedef olarak
  • ilişkinin adı 'contains' veya 'isAssociatedWith'
  • sorgu değişkeni rverilen ilişki, 10'a eşit bir uzunluk özelliğine sahiptir

Sorgu ayrıca ikiz Floor değerinin $dtId 'thermostat-15' olduğunu belirtir.

SELECT Floor, Room FROM DIGITALTWINS    
MATCH (Floor)-[r:contains|isAssociatedWith]->(Room) 
WHERE Floor.$dtId = 'thermostat-15' AND r.length = 10

Aşağıdaki örnekte zincirlenmiş ilişki koşulları gösterilmektedir. Sorgu, floor, cafe ve room ikizlerini bulur; burada...

  • Kat ve Oda arasındaki ilişki şu koşulları karşılar:
    • ilişki soldan sağa, Floor kaynak, Cafe ise hedef olarak
    • ilişkinin adı 'contains' veya 'isAssociatedWith'
    • sorgu değişkeni rverilen ilişki, 10'a eşit bir uzunluk özelliğine sahiptir
  • Cafe ve Room arasındaki ilişki şu koşulları karşılar:
    • ilişki sağdan sola, Oda kaynak ve Cafe hedef olarak
    • ilişkinin adı 'has' veya 'includes'
    • ilişkide en fazla 3 (yani 1, 2 veya 3) atlama vardır

Sorgu ayrıca ikiz Floor değerinin $dtId 'thermostat-15' olduğunu ve ikiz Cafe'nin sıcaklığı 55 olduğunu belirtir.

SELECT Floor,Room, Cafe FROM DIGITALTWINS    
MATCH (Floor)-[r:contains|isAssociatedWith]->(Cafe)<-[has|includes*..3]-(Room)  
WHERE Floor.$dtId = 'thermostat-15'  AND r.length = 10 AND Cafe.temperature = 55

Çift yönlü ilişkileri ifade etmek için zincirlenmiş ilişki koşullarını da kullanabilirsiniz. Aşağıdaki sorgu ikizleri bulur Floor, Room ve Building, where...

  • Bina ile Kat arasındaki ilişki şu koşulları karşılar:
    • ilişki soldan sağa, kaynak olarak Bina ve hedef olarak Floor'dır
    • ilişkinin adı 'isAssociatedWith'
    • ilişkiye bir sorgu değişkeni verilir r1
  • Kat ve Oda arasındaki ilişki şu koşulları karşılar:
    • ilişki sağdan sola, Oda kaynak ve Floor hedef olarak
    • ilişkinin adı 'isAssociatedWith'
    • ilişkiye bir sorgu değişkeni verilir r2

Sorgu ayrıca ikiz Bina'nın $dtId 'building-3' ve Room'un 50'den büyük bir sıcaklığa sahip olduğunu belirtir.

SELECT Floor, Room, Building FROM DIGITALTWINS    
MATCH (Building)-[r1:isAssociatedWith]->(Floor)<-[r2:isAssociatedWith]-(Room)
WHERE Building.$dtId = 'building-3'  AND Room.temperature > 50

Sınırlamalar

Aşağıdaki sınırlar kullanan MATCHsorgular için geçerlidir:

  • Sorgu deyimi başına yalnızca bir MATCH ifade desteklenir.

  • $dtId yan tümcesinde WHERE gereklidir.

  • İlişkiye bir sorgu değişkeni atamak yalnızca sorgu tek bir atlama belirttiğinde desteklenir.

  • Sorguda desteklenen en fazla atlama sayısı 10'dur.

  • MATCH geçişi için başlangıç ikizi dışında herhangi bir ikizde filtre içeren $dtId MATCH sorguları boş sonuçlar gösterebilir. Örneğin, aşağıdaki sorgu bu sınırlamaya tabidir:

    SELECT A, B, C FROM DIGITALTWINS 
    MATCH A-[contains]->B-[is_part_of]->C 
    WHERE B.$dtId = 'Device01'
    

    Senaryonuz diğer ikizlerde kullanmanızı $dtId gerektiriyorsa bunun yerine JOIN yan tümcesini kullanmayı göz önünde bulundurun.

  • Aynı ikizi birden çok kez geçen MATCH sorguları beklenmedik şekilde bu ikizi sonuçlardan kaldırabilir.