مرجع لغة استعلام Azure Digital Twins: عبارة MATCH

يحتوي هذا المستند على معلومات مرجعية حول عبارة MATCH للغة استعلام Azure Digital Twins.

MATCH يتم استخدام العبارة في لغة استعلام Azure Digital Twins كجزء من عبارة FROM. MATCH يسمح لك بتحديد النمط الذي يجب اتباعه أثناء اجتياز العلاقات في الرسم البياني Azure Digital Twins (يعرف هذا أيضا باسم نمط استعلام "قفزة متغيرة").

هذه العبارة اختيارية أثناء الاستعلام.

بناء الجملة الأساسي: MATCH

MATCH يدعم أي استعلام يعثر على مسار بين التوائم ضمن مجموعة من القفزات، استنادا إلى شروط علاقة معينة.

يمكن أن يتضمن شرط العلاقة واحدا أو أكثر من التفاصيل التالية:

  • اتجاه العلاقة (من اليسار إلى اليمين أو من اليمين إلى اليسار أو غير الاتجاه)
  • اسم العلاقة (اسم واحد أو قائمة الاحتمالات)
  • عدد "القفزات" من توأم إلى آخر (العدد أو النطاق الدقيق)
  • تعيين متغير استعلام لتمثيل العلاقة داخل نص الاستعلام. سيسمح لك هذا أيضا بالتصفية على خصائص العلاقة.

يجب أن يستخدم الاستعلام الذي يحتوي على MATCH عبارة عبارة أيضا عبارة WHERE لتحديد $dtId واحد على الأقل من التوائم التي تشير إليها.

إشعار

MATCH هي مجموعة فائقة من جميع JOIN الاستعلامات التي يمكن تنفيذها في مخزن الاستعلام.

بناء الجملة

إليك بناء الجملة الأساسي MATCH .

يحتوي على هذه العناصر النائبة:

  • twin_or_twin_collection (x2): MATCH تتطلب العبارة معاملا واحدا لتمثيل توأم واحد. يمكن أن يمثل المعامل الآخر توأما واحدا آخر، أو مجموعة من التوائم.
  • relationship_condition: في هذه المساحة، حدد شرطا يصف العلاقة بين التوائم أو المجموعات المزدوجة. يمكن للشرط تحديد اتجاه العلاقة أو تحديد اسم العلاقة أو تحديد عدد القفزات أو تحديد خصائص العلاقة أو أي مجموعة من هذه الخيارات.
  • twin_ID: هنا، حدد $dtId ضمن إحدى المجموعات المزدوجة بحيث تمثل إحدى المعاملات توأما واحدا.
--SELECT ... FROM ...  
MATCH (twin_or_twin_collection_1)-[relationship_condition]-(twin_or_twin_collection_2)
WHERE twin_or_twin_collection.$dtId = 'twin_ID' 
-- AND ...

يمكنك ترك إحدى المجموعات المزدوجة فارغة للسماح لأي توأم بالعمل في تلك البقعة.

يمكنك أيضا تغيير عدد شروط العلاقة، للحصول على شروط علاقة متسلسلة متعددة أو عدم وجود شرط علاقة على الإطلاق:

--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'

لمزيد من التفاصيل حول كل نوع من أنواع شروط العلاقة وكيفية دمجها، راجع الأقسام الأخرى من هذا المستند.

مثال

فيما يلي مثال استعلام باستخدام MATCH.

يحدد الاستعلام اتجاه العلاقة، ويبحث عن توائم البناء والاستشعار حيث...

  • يتم استهداف جهاز الاستشعار من قبل أي علاقة من بناء التوأم مع المبنى $dtId 21، و
  • المستشعر لديه درجة حرارة أعلى من 50. يتم تضمين كل من المبنى وأداة الاستشعار في نتيجة الاستعلام.
SELECT Building, Sensor FROM DIGITALTWINS 
MATCH (Building)-[]->(Sensor) 
WHERE Building.$dtId = 'Building21' AND Sensor.temperature > 50

تحديد اتجاه العلاقة

استخدم شرط العلاقة في MATCH عبارة لتحديد اتجاه العلاقة بين التوائم. تتضمن التوجيهات المحتملة من اليسار إلى اليمين أو من اليمين إلى اليسار أو غير الاتجاه. يتم الكشف عن العلاقات الدورية تلقائيا، بحيث يتم اجتياز العلاقة مرة واحدة فقط.

إشعار

من الممكن تمثيل العلاقات ثنائية الاتجاه باستخدام التسلسل.

بناء الجملة

إشعار

تركز الأمثلة في هذا القسم على اتجاه العلاقة. لا يحددون أسماء العلاقات، بل يتم تعيينها افتراضيا إلى قفزة واحدة، ولا يقومون بتعيين متغيرات الاستعلام للعلاقات. للحصول على إرشادات حول كيفية القيام بالمزيد باستخدام هذه الشروط الأخرى، راجع تحديد اسم العلاقة، وتحديد عدد القفزات، وتعيين متغير استعلام للعلاقة. للحصول على معلومات حول كيفية استخدام العديد من هذه معا في نفس الاستعلام، راجع دمج عمليات MATCH.

تستخدم أوصاف العلاقة الاتجاهية تصويرا مرئيا لسهم للإشارة إلى اتجاه العلاقة. يتضمن السهم مسافة تم تعيينها جانبا بواسطة أقواس مربعة ([]) لاسم علاقة اختياري.

يعرض هذا القسم بناء الجملة لاتجاهات العلاقات المختلفة. قيم العنصر النائب التي يجب استبدالها بقيمك هي source_twin_or_twin_collection و target_twin_or_twin_collection.

للحصول على علاقة من اليسار إلى اليمين ، استخدم بناء الجملة التالي.

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

للحصول على علاقة من اليمين إلى اليسار ، استخدم بناء الجملة التالي.

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

للحصول على علاقة غير اتجاهية ، استخدم بناء الجملة التالي. لن يحدد هذا اتجاها للعلاقة، لذلك سيتم تضمين علاقات أي اتجاه في النتيجة.

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

تلميح

تتطلب الاستعلامات غير الاتجاهية معالجة إضافية، مما قد يؤدي إلى زيادة زمن الانتقال والتكلفة.

الأمثلة

يوضح المثال الأول اجتياز اتجاهي من اليسار إلى اليمين. يبحث هذا الاستعلام عن Twins Room و Factory حيث...

  • استهداف الغرفة للمصنع (مع أي اسم للعلاقة)
  • تحتوي الغرفة على قيمة درجة حرارة أكبر من 50
  • يحتوي المصنع على ' $dtId ABC'
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)-[]->(Factory) 
WHERE Room.temperature > 50 AND Factory.$dtId = 'ABC'

إشعار

قد تظهر استعلامات MATCH التي تحتوي على $dtId عوامل تصفية على أي توأم غير التوأم البداية لاجتياز MATCH نتائج فارغة. ينطبق هذا على factory.$dtId في المثال أعلاه. لمزيد من المعلومات، راجع القيود.

يوضح المثال التالي اجتياز اتجاهي من اليمين إلى اليسار. يبدو هذا الاستعلام مشابها للاستعلام أعلاه، ولكن يتم عكس اتجاه العلاقة بين Room و Factory. يبحث هذا الاستعلام عن Twins Room و Factory حيث...

  • يستهدف المصنع الغرفة (مع أي اسم للعلاقة)
  • يحتوي المصنع على ' $dtId ABC'
  • تحتوي الغرفة على قيمة درجة حرارة أكبر من 50
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)<-[]-(Factory) 
WHERE Factory.$dtId = 'ABC' AND Room.temperature > 50

يوضح المثال التالي اجتيازا غير اتجاهي. يبحث هذا الاستعلام عن Twins Room و Factory حيث...

  • تشترك الغرفة والمصنع في أي اسم للعلاقة، تسير في أي اتجاه
  • يحتوي المصنع على ' $dtId ABC'
  • تحتوي الغرفة على قيمة رطوبة أكبر من 70
SELECT Factory, Room FROM DIGITALTWINS MATCH (Factory)-[]-(Room) 
WHERE Factory.$dtId ='ABC'  AND Room.humidity > 70

تحديد اسم العلاقة

اختياريا، يمكنك استخدام شرط العلاقة في MATCH عبارة لتحديد أسماء العلاقات بين التوائم. يمكنك تحديد اسم واحد أو قائمة بالأسماء المحتملة. يتم تضمين اسم العلاقة الاختياري كجزء من بناء جملة السهم لتحديد اتجاه العلاقة.

إذا لم تقدم اسم علاقة، فسيتضمن الاستعلام كافة أسماء العلاقات بشكل افتراضي.

تلميح

يمكن أن يؤدي تحديد أسماء العلاقات في الاستعلام إلى تحسين الأداء وجعل النتائج أكثر قابلية للتنبؤ.

بناء الجملة

إشعار

تركز الأمثلة في هذا القسم على اسم العلاقة. تظهر جميعها علاقات غير اتجاهية، وتوضع افتراضيا على قفزة واحدة، ولا تعين متغيرات الاستعلام للعلاقات. للحصول على إرشادات حول كيفية القيام بالمزيد باستخدام هذه الشروط الأخرى، راجع تحديد اتجاه العلاقة، وتحديد عدد القفزات، وتعيين متغير استعلام للعلاقة. للحصول على معلومات حول كيفية استخدام العديد من هذه معا في نفس الاستعلام، راجع دمج عمليات MATCH.

حدد اسم علاقة لاجتيازها في العبارة MATCH ضمن أقواس مربعة ([])، بعد علامة النقطتين (:). يعرض هذا القسم بناء جملة تحديد العلاقات المسماة.

للحصول على اسم واحد، استخدم بناء الجملة التالي. قيم العنصر النائب التي يجب استبدالها بقيمك هي twin_or_twin_collection_1و relationship_nameو.twin_or_twin_collection_2

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

للحصول على أسماء محتملة متعددة، استخدم بناء الجملة التالي. قيم العنصر النائب التي يجب استبدالها بقيمك هي twin_or_twin_collection_1و relationship_name_option_1relationship_name_option_2twin_or_twin_collection_2و و والملاحظة لمتابعة النمط حسب الحاجة لعدد أسماء العلاقات التي تريد إدخالها.

-- 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 ...

هام

علامة النقطتين (:) ضمن الأقواس المربعة هي جزء مطلوب من بناء الجملة لتحديد اسم علاقة في MATCH استعلام. إذا لم تقم بتضمين علامة النقطين، فلن يحدد الاستعلام اسم علاقة. بدلا من ذلك، لديك استعلام يعين متغير استعلام إلى العلاقة.

(افتراضي) لترك الاسم غير محدد، اترك الأقواس فارغة من معلومات الاسم، مثل هذا:

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

الأمثلة

يوضح المثال التالي اسم علاقة واحدة. يبحث هذا الاستعلام عن Twins Building and Sensor حيث...

  • يحتوي المبنى على علاقة "يحتوي" على أداة الاستشعار (تسير في أي من الاتجاهين)
  • يحتوي المبنى على ' $dtId Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building)-[:contains]-(Sensor)  
WHERE Building.$dtId = 'Seattle21'

يوضح المثال التالي أسماء علاقات محتملة متعددة. يبدو هذا الاستعلام مشابها للاستعلام أعلاه، ولكن هناك العديد من أسماء العلاقات المحتملة المضمنة في النتيجة. يبحث هذا الاستعلام عن Twins Building and Sensor حيث...

  • يحتوي المبنى إما على علاقة "contains" أو "isAssociatedWith" بأداة الاستشعار (تسير في أي من الاتجاهين)
  • يحتوي المبنى على ' $dtId Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building)-[:contains|isAssociatedWith]-(Sensor)  
WHERE building.$dtId = 'Seattle21'

لا يحتوي المثال التالي على اسم علاقة محدد. ونتيجة لذلك، سيتم تضمين العلاقات مع أي اسم في نتيجة الاستعلام. يبحث هذا الاستعلام عن Twins Building and Sensor حيث...

  • المبنى له علاقة بأداة الاستشعار بأي اسم (ويذهب في أي اتجاه)
  • يحتوي المبنى على ' $dtId Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building-[]-(Sensor)  
WHERE Building.$dtId = 'Seattle21'

تحديد عدد القفزات

اختياريا، يمكنك استخدام شرط العلاقة في MATCH عبارة لتحديد عدد القفزات للعلاقات بين التوائم. يمكنك تحديد رقم أو نطاق محدد. يتم تضمين هذه القيمة الاختيارية كجزء من بناء جملة السهم لتحديد اتجاه العلاقة.

إذا لم توفر عددا من القفزات، فسيتم تعيين الاستعلام افتراضيا على قفزة واحدة.

هام

إذا قمت بتحديد عدد من القفزات أكبر من واحدة، فلا يمكنك تعيين متغير استعلام إلى العلاقة. يمكن استخدام شرط واحد فقط من هذه الشروط داخل نفس الاستعلام.

بناء الجملة

إشعار

تركز الأمثلة في هذا القسم على عدد القفزات. جميعها تظهر علاقات غير اتجاهية دون تحديد أسماء. للحصول على إرشادات حول كيفية القيام بالمزيد باستخدام هذه الشروط الأخرى، راجع تحديد اتجاه العلاقة وتحديد اسم العلاقة. للحصول على معلومات حول كيفية استخدام العديد من هذه معا في نفس الاستعلام، راجع دمج عمليات MATCH.

حدد عدد القفزات التي يجب اجتيازها في العبارة MATCH داخل الأقواس المربعة ([]).

لتحديد عدد صحيح من القفزات، استخدم بناء الجملة التالي. قيم العنصر النائب التي يجب استبدالها بقيمك هي twin_or_twin_collection_1و number_of_hopsو.twin_or_twin_collection_2

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

لتحديد نطاق من القفزات، استخدم بناء الجملة التالي. قيم العنصر النائب التي يجب استبدالها بقيمك هي twin_or_twin_collection_1و starting_limitending_limit و.twin_or_twin_collection_2 لا يتم تضمين حد البدء في النطاق، بينما يتم تضمين حد النهاية.

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

يمكنك أيضا ترك حد البدء للإشارة إلى "أي شيء يصل إلى" (بما في ذلك) حد النهاية. يجب دائما توفير حد الانتهاء.

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

(افتراضي) للإعداد الافتراضي لوثبة واحدة، اترك الأقواس فارغة من معلومات الوثب، مثل هذا:

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

الأمثلة

يحدد المثال التالي عددا دقيقا من القفزات. سيعيد الاستعلام فقط العلاقات بين طابق التوائم والغرفة التي هي بالضبط 3 قفزات.

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

يحدد المثال التالي مجموعة من القفزات. سيعيد الاستعلام العلاقات بين أرضية التوائم والغرفة التي تتراوح بين 1 و3 قفزات (مما يعني أن عدد القفزات هو إما 2 أو 3).

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

يمكنك أيضا إظهار نطاق من خلال توفير حد واحد فقط. في المثال التالي، سيعيد الاستعلام العلاقات بين طابق التوائم والغرفة التي تكون على الأكثر وثبين (مما يعني أن عدد القفزات هو إما 1 أو 2).

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

لا يحتوي المثال التالي على عدد محدد من القفزات، لذلك سيتم افتراضيا إلى قفزة واحدة بين أرضية التوائم وغرفة.

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

تعيين متغير الاستعلام إلى العلاقة (وتحديد خصائص العلاقة)

اختياريا، يمكنك تعيين متغير استعلام إلى العلاقة المشار إليها في MATCH عبارة ، بحيث يمكنك الرجوع إليها بالاسم في نص الاستعلام.

نتيجة مفيدة للقيام بذلك هي القدرة على التصفية على خصائص العلاقة في عبارة الخاصة بك WHERE .

هام

يتم دعم تعيين متغير استعلام إلى العلاقة فقط عندما يحدد الاستعلام قفزة واحدة. ضمن استعلام، يجب الاختيار بين تحديد متغير علاقة وتحديد عدد أكبر من القفزات.

بناء الجملة

إشعار

تركز الأمثلة في هذا القسم على متغير استعلام للعلاقة. جميعها تظهر علاقات غير اتجاهية دون تحديد أسماء. للحصول على إرشادات حول كيفية القيام بالمزيد باستخدام هذه الشروط الأخرى، راجع تحديد اتجاه العلاقة وتحديد اسم العلاقة. للحصول على معلومات حول كيفية استخدام العديد من هذه معا في نفس الاستعلام، راجع دمج عمليات MATCH.

لتعيين متغير استعلام إلى العلاقة، ضع اسم المتغير في الأقواس المربعة ([]). قيم العنصر النائب الموضحة أدناه والتي يجب استبدالها بقيمك هي twin_or_twin_collection_1و relationship_variableو.twin_or_twin_collection_2

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

الأمثلة

يعين المثال التالي متغير استعلام 'Rel' إلى العلاقة. لاحقا، في العبارة WHERE ، يستخدم المتغير لتحديد أن العلاقة Rel يجب أن يكون لها خاصية اسم بقيمة 'child'.

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

دمج عمليات MATCH

يمكنك دمج شروط علاقة متعددة في نفس الاستعلام. يمكنك أيضا ربط شروط علاقة متعددة للتعبير عن العلاقات ثنائية الاتجاه أو مجموعات أكبر أخرى.

بناء الجملة

في استعلام واحد، يمكنك دمج اتجاه العلاقة واسم العلاقة وأحد عدد القفزات أو تعيين متغير استعلام.

توضح أمثلة بناء الجملة التالية كيفية دمج هذه السمات. يمكنك أيضا ترك أي من التفاصيل الاختيارية المعروضة في العناصر النائبة لحذف هذا الجزء من الشرط.

لتحديد اتجاه العلاقة واسم العلاقة وعدد القفزات داخل استعلام واحد، استخدم بناء الجملة التالي ضمن شرط العلاقة. قيم العنصر النائب التي يجب استبدالها بقيمك هي twin_or_twin_collection_1 و twin_or_twin_collection_2optional_left_angle_bracket و و optional_right_angle_bracketrelationship_name(s)و.number_of_hops

-- 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

لتحديد اتجاه العلاقة واسم العلاقة ومتغير استعلام للعلاقة داخل استعلام واحد، استخدم بناء الجملة التالي ضمن شرط العلاقة. قيم العنصر النائب التي يجب استبدالها بقيمك هي twin_or_twin_collection_1 و twin_or_twin_collection_2optional_left_angle_bracket و و optional_right_angle_bracketrelationship_variableو.relationship_name(s)

-- 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

إشعار

وفقا لخيارات تحديد اتجاه العلاقة، يجب الاختيار بين قوس زاوية أيسر لعلاقة من اليسار إلى اليمين أو قوس زاوية أيمن لعلاقة من اليمين إلى اليسار. لا يمكنك تضمين كليهما على نفس السهم، ولكن يمكنك تمثيل العلاقات ثنائية الاتجاه عن طريق التسلسل.

يمكنك ربط شروط علاقات متعددة معا، مثل هذا. قيم العنصر النائب التي يجب استبدالها بقيمك هي twin_or_twin_collection_1، وجميع مثيلات relationship_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'

الأمثلة

فيما يلي مثال يجمع بين اتجاه العلاقة واسم العلاقة وعدد القفزات. يبحث الاستعلام التالي عن Twins Floor and Room حيث تفي العلاقة بين Floor و Room بهذه الشروط:

  • العلاقة من اليسار إلى اليمين، مع Floor كمصدر وغرفة كهدف
  • العلاقة لها اسم إما 'contains' أو 'isAssociatedWith'
  • العلاقة إما 4 أو 5 قفزات

يحدد الاستعلام أيضا أن الأرضية المزدوجة تحتوي على $dtId 'thermostat-15'.

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

فيما يلي مثال يجمع بين اتجاه العلاقة واسم العلاقة ومتغير استعلام مسمى للعلاقة. يبحث الاستعلام التالي عن Twins Floor and Room حيث يتم تعيين العلاقة بين Floor و Room إلى متغير r استعلام ويلبي هذه الشروط:

  • العلاقة من اليسار إلى اليمين، مع Floor كمصدر وغرفة كهدف
  • العلاقة لها اسم إما 'contains' أو 'isAssociatedWith'
  • العلاقة، التي يتم منحها متغير rاستعلام، لها خاصية طول تساوي 10

يحدد الاستعلام أيضا أن الأرضية المزدوجة تحتوي على $dtId 'thermostat-15'.

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

يوضح المثال التالي شروط العلاقة المتسلسلة . يبحث الاستعلام عن Twins Floor ومقهى وغرفة، حيث...

  • العلاقة بين الطابق والغرفة تفي بهذه الشروط:
    • العلاقة من اليسار إلى اليمين، مع Floor كمصدر ومقهى كهدف
    • العلاقة لها اسم إما 'contains' أو 'isAssociatedWith'
    • العلاقة، التي يتم منحها متغير rالاستعلام ، لها خاصية طول تساوي 10
  • العلاقة بين كافيه وغرفة تفي بهذه الشروط:
    • العلاقة من اليمين إلى اليسار، مع الغرفة كمصدر ومقهى كهدف
    • العلاقة لها اسم إما 'has' أو 'includes'
    • تحتوي العلاقة على ما يصل إلى 3 (حتى 1 أو 2 أو 3) قفزات

يحدد الاستعلام أيضا أن الطابق المزدوج يحتوي على $dtId 'thermostat-15' ومقهى التوأم لديه درجة حرارة 55.

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

يمكنك أيضا استخدام شروط العلاقة المتسلسلة للتعبير عن العلاقات ثنائية الاتجاه. يبحث الاستعلام التالي عن Twins Floor و Room و Building، حيث...

  • تفي العلاقة بين المبنى والطابق بهذه الشروط:
    • العلاقة من اليسار إلى اليمين، مع المبنى كمصدر والطابق كهدف
    • العلاقة لها اسم 'isAssociatedWith'
    • يتم إعطاء العلاقة متغير استعلام r1
  • العلاقة بين الطابق والغرفة تفي بهذه الشروط:
    • العلاقة من اليمين إلى اليسار، مع الغرفة كمصدر والطابق كهدف
    • العلاقة لها اسم 'isAssociatedWith'
    • يتم إعطاء العلاقة متغير استعلام r2

يحدد الاستعلام أيضا أن المبنى المزدوج يحتوي على $dtId "المبنى-3" والغرفة بها درجة حرارة أكبر من 50.

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

القيود

تنطبق الحدود التالية على الاستعلامات باستخدام MATCH:

  • يتم اعتماد تعبير واحد MATCH فقط لكل عبارة استعلام.

  • $dtId مطلوب في WHERE عبارة .

  • يتم دعم تعيين متغير استعلام إلى العلاقة فقط عندما يحدد الاستعلام قفزة واحدة.

  • الحد الأقصى للقفزات المعتمدة في استعلام هو 10.

  • قد تظهر استعلامات MATCH التي تحتوي على $dtId عوامل تصفية على أي توأم غير التوأم البداية لاجتياز MATCH نتائج فارغة. على سبيل المثال، يخضع الاستعلام التالي لهذا القيد:

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

    إذا كان السيناريو الخاص بك يتطلب منك استخدام $dtId على توائم أخرى، ففكر في استخدام عبارة JOIN بدلا من ذلك.

  • قد تؤدي استعلامات MATCH التي تجتاز نفس التوأم عدة مرات إلى إزالة هذا التوأم من النتائج بشكل غير متوقع.