لغة الاستعلام (Cypher)

Cypher هي لغة استعلام بيانية تسمح بالاستعلام عن البيانات بشكل معبر وفعال في رسم بياني للخصائص . [ 1 ]

كان Cypher إلى حد كبير اختراعًا لأندريس تايلور أثناء عمله في Neo4j, Inc. (المعروفة سابقًا باسم Neo Technology) في عام 2011. [ 2 ] كان من المفترض في الأصل استخدام Cypher مع قاعدة بيانات الرسوم البيانية Neo4j ، ولكن تم فتحه من خلال مشروع openCypher في أكتوبر 2015. [ 3 ]

صُممت لغة البرمجة مع مراعاة قوة وإمكانيات لغة SQL (لغة الاستعلام القياسية لنموذج قواعد البيانات العلائقية )، ولكن لغة Cypher استندت إلى مكونات واحتياجات قاعدة بيانات مبنية على مفاهيم نظرية الرسوم البيانية . في نموذج الرسم البياني، تُهيكل البيانات على شكل عُقد ( رؤوس في الرياضيات وعلوم الشبكات) وعلاقات (حواف في الرياضيات وعلوم الشبكات) للتركيز على كيفية اتصال الكيانات في البيانات وارتباطها ببعضها البعض.

نموذج الرسم البياني

تعتمد لغة سايفر على نموذج الرسم البياني للخصائص ، الذي ينظم البيانات في عقد وحواف (تُسمى "علاقات" في سايفر). بالإضافة إلى عناصر الرسم البياني القياسية المتمثلة في العقد والعلاقات، يُضيف نموذج الرسم البياني للخصائص تصنيفات وخصائص لوصف فئات وسمات أدق للبيانات.

العقد هي الكيانات في الرسم البياني. يمكنها أن تحمل أي عدد من السمات ( أزواج المفتاح والقيمة ) التي تُسمى خصائص. يمكن وسم العقد بصفر أو أكثر من التصنيفات (مثل الوسوم أو الفئات)، والتي تُمثل أدوارها المختلفة في مجال معين. توفر العلاقات روابط موجهة ومُسماة وذات صلة دلالية بين كيانين من العقد. لكل علاقة اتجاه، وعقدة بداية، وعقدة نهاية، ونوع علاقة واحد فقط. ومثل العقد، يمكن أن تحتوي العلاقات أيضًا على خصائص. [ 4 ]

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

نظام أنواع البيانات

يتضمن نظام أنواع البيانات في لغة سايفر العديد من أنواع البيانات الشائعة المستخدمة في لغات البرمجة والاستعلام الأخرى. تشمل أنواع البيانات المدعومة أنواع القيم العددية مثل القيم المنطقية ، والسلاسل النصية ، والأعداد ، والأعداد الصحيحة ، والأعداد العشرية . كما يدعم أنواع البيانات الزمنية مثل datetimeالتاريخ localdatetimeوالوقت والتوقيت المحلي والمدة. تتوفر أيضًا أنواع بيانات الحاويات للخرائط والقوائم، بالإضافة إلى أنواع بيانات الرسوم البيانية للعقد والعلاقات والمسارات، ونوع فارغ . [ 5 ]

بناء الجملة

تُصوّر لغة الاستعلام Cypher أنماط العُقد والعلاقات، وتُصفّي هذه الأنماط بناءً على التصنيفات والخصائص. يعتمد بناء جملة Cypher على فن ASCII ، وهو فن بصري نصي مُصمّم للحواسيب. هذا يجعل اللغة سهلة القراءة وذات طابع بصري مميز، لأنها تُمثّل البيانات المُحدّدة في الاستعلام بصريًا وهيكليًا. على سبيل المثال، تُمثّل العُقد بأقواس حول السمات والمعلومات المُتعلّقة بالكيان. أما العلاقات، فتُصوّر بسهم (موجّه أو غير موجّه) مع نوع العلاقة بين قوسين معقوفين.

//node ( variable : Label { propertyKey : 'propertyValue' })// العلاقة -[ المتغير : نوع العلاقة ]->// نمط التشفير ( العقدة 1 : التسمية أ ) - [ العلاقة 1 : نوع العلاقة ] -> ( العقدة 2 : التسمية ب )

الكلمات المفتاحية

على غرار لغات الاستعلام الأخرى، تحتوي لغة سايفر على مجموعة متنوعة من الكلمات المفتاحية لتحديد الأنماط، وتصفية الأنماط، وإرجاع النتائج. ومن بين أكثرها شيوعًا: MATCH وWHERE وRETURN. تعمل هذه الكلمات بشكل مختلف قليلًا عن SELECT وWHERE في لغة SQL ، إلا أنها تؤدي أغراضًا متشابهة.

تُستخدم عبارة MATCH قبل وصف نمط البحث للعثور على العُقد، أو العلاقات، أو مجموعات العُقد والعلاقات معًا. [ 6 ] تُستخدم عبارة WHERE في لغة Cypher لإضافة قيود إضافية إلى الأنماط وتصفية أي أنماط غير مرغوب فيها. [ 7 ] تُنسق عبارة RETURN في لغة Cypher كيفية إخراج النتائج وتنظمها. وكما هو الحال في لغات الاستعلام الأخرى، يمكنك إرجاع النتائج بخصائص محددة، أو قوائم، أو ترتيب، وغير ذلك. [ 8 ]

باستخدام الكلمات المفتاحية مع صيغة النمط الموضحة أعلاه، سيبحث الاستعلام التالي عن نمط العقدة (اسم الممثل وخاصية الاسم بقيمة "نيكول كيدمان") المرتبطة بعلاقة (نوع ACTED_IN واتجاه صادر من العقدة الأولى) بعقدة أخرى (اسم الفيلم). ثم تقوم عبارة WHERE بتصفية النتائج للاحتفاظ فقط بالأنماط التي تحتوي فيها عقدة الفيلم في عبارة المطابقة على خاصية السنة أقل من قيمة المعامل المُمرر. في النتيجة، يُحدد الاستعلام إخراج عقد الأفلام التي تُطابق النمط، مع تطبيق التصفية من عبارتي المطابقة وWHERE.

MATCH ( nicole : Actor { name : 'Nicole Kidman' }) -[ : ACTED_IN ]-> ( movie : Movie ) WHERE movie . year < $ yearParameter RETURN movie

تحتوي لغة سايفر أيضًا على كلمات مفتاحية لتحديد بنود كتابة البيانات وتحديثها وحذفها. تُستخدم كلمتا CREATE وDELETE لإنشاء العُقد والعلاقات وحذفها. وتُستخدم كلمتا SET وREMOVE لتعيين قيم للخصائص وإضافة/حذف التسميات على العُقد. وتُستخدم كلمة MERGE لإنشاء عُقد فريدة دون تكرار. لا يُمكن حذف العُقد إلا إذا لم تكن لها علاقات أخرى قائمة. على سبيل المثال: [ 9 ]

MATCH ( startContent : Content ) -[ relationship : IS_RELATED_TO ]-> ( endContent : Content ) WHERE endContent . source = 'user' OPTIONAL MATCH ( endContent ) -[ r ]- () DELETE relationship , endContent

التقييس

مع مشروع openCypher ، بدأت جهود لتوحيد لغة Cypher كلغة استعلام لمعالجة الرسوم البيانية. وكجزء من هذه العملية، عُقدت خمسة اجتماعات حضورية لمطوري openCypher ( oCIMs ). عُقد الاجتماع الأول في فبراير 2017 في مقر شركة SAP في فالدورف بألمانيا، بالتزامن مع اجتماع مجلس معايير البيانات المرتبطة. أما آخر اجتماع OCIM فقد عُقد في برلين، [ 10 ] بالتزامن مع ورشة عمل W3C حول معايير الويب لإدارة بيانات الرسوم البيانية، في مارس 2019. [ 11 ]

في ذلك الاجتماع، تم التوصل إلى إجماع على العمل لجعل لغة سايفر عنصرًا أساسيًا في مشروع أوسع نطاقًا للغة استعلام رسومية موحدة دوليًا تُسمى GQL. في سبتمبر 2019، تمت الموافقة على مقترح مشروع معيار GQL بتصويت هيئات المعايير الوطنية الأعضاء في اللجنة الفنية المشتركة الأولى التابعة للمنظمة الدولية للمعايير/اللجنة الكهروتقنية الدولية (المسؤولة عن معايير تكنولوجيا المعلومات). [ 12 ] ينص مقترح مشروع GQL على ما يلي:

يُعدّ استخدام الرسوم البيانية كتمثيل أساسي لنمذجة البيانات نهجًا ناشئًا في إدارة البيانات. في هذا النهج، تُنمذج مجموعة البيانات كرسم بياني، حيث يُمثّل كل كيان بيانات برأس (يُسمى أيضًا عقدة) في الرسم البياني، وتُمثّل كل علاقة بين كيانين بحافة بين الرؤوس المتناظرة. وقد حظي نموذج بيانات الرسم البياني باهتمام واسع نظرًا لمزاياه الفريدة. أولًا، يُناسب نموذج الرسم البياني مجموعات البيانات ذات الهياكل الهرمية أو المعقدة أو حتى العشوائية. إذ يُمكن ترميز هذه الهياكل بسهولة في نموذج الرسم البياني كحواف. وهذا يُعدّ أكثر ملاءمة من النموذج العلائقي، الذي يتطلب تطبيع مجموعة البيانات إلى مجموعة من الجداول ذات أنواع صفوف ثابتة. ثانيًا، يُتيح نموذج الرسم البياني تنفيذًا فعالًا للاستعلامات المكلفة أو وظائف تحليل البيانات التي تحتاج إلى رصد العلاقات متعددة المراحل بين كيانات البيانات، مثل استعلامات إمكانية الوصول، واستعلامات أقصر أو أقل تكلفة مسار، أو تحليل المركزية. يوجد حاليًا نموذجان للرسم البياني قيد الاستخدام: نموذج إطار وصف الموارد (RDF) ونموذج الرسم البياني للخصائص. تم توحيد نموذج RDF من قِبل اتحاد شبكة الويب العالمية (W3C) في عدد من المواصفات. أما نموذج الرسم البياني للخصائص، فيتميز بتطبيقات متعددة في قواعد بيانات الرسوم البيانية، وخوارزميات الرسوم البيانية، ومرافق معالجة الرسوم البيانية. ومع ذلك، تفتقر هذه النماذج إلى لغة استعلام موحدة ومشتركة للرسوم البيانية للخصائص (مثل لغة SQL لأنظمة قواعد البيانات العلائقية). وقد تم اقتراح لغة GQL لسد هذه الثغرة. [ 13 ]

اعتبارًا من عام 2024، نُشر معيار GQL كلغة استعلام الرسوم البيانية القياسية بموجب معيار ISO/IEC 39075:2024. [ 14 ] يتوفر بالفعل أول تطبيق مفتوح المصدر لمجموعة فرعية من اللغة. [ 15 ] [ 16 ] بالإضافة إلى التطبيق، يمكن أيضًا الاطلاع على صياغة رسمية وقراءة قواعد بناء الجملة للمجموعة الفرعية المحددة من GQL. [ 17 ]

انظر أيضاً

مراجع

  1. "مقدمة عن لغة سايفر" . Neo4j . تم الاطلاع عليه بتاريخ 2019-11-08 .
  2. "سايفر: لغة استعلام متطورة لرسوم بيانية الخصائص" (ملف PDF) . وقائع المؤتمر الدولي لإدارة البيانات لعام 2018. ACM . تاريخ الاسترجاع: 27 يونيو 2018 .
  3. "تعرّف على openCypher: لغة SQL للرسوم البيانية - قاعدة بيانات Neo4j للرسوم البيانية" . قاعدة بيانات Neo4j للرسوم البيانية . 21-10-2015 . تم الاطلاع عليه بتاريخ 08-11-2019 .
  4. "نموذج الرسم البياني للخصائص" . GitHub . تم الاسترجاع في 2019-11-08 .
  5. "نظام أنواع التشفير" . جيت هاب . تم الاسترجاع في 2019-11-08 .
  6. "دليل لغة التشفير - عبارة MATCH" . Neo4j . تم الاطلاع عليه بتاريخ 2019-11-08 .
  7. "دليل لغة سايفر - شرط WHERE" . Neo4j . تم الاطلاع عليه بتاريخ 2019-11-08 .
  8. "دليل لغة التشفير - عبارة الإرجاع" . Neo4j . تم الاطلاع عليه بتاريخ 2019-11-08 .
  9. "بنود دليل التشفير" . Neo4j . تم الاسترجاع في 2019-11-08 .
  10. "الأحداث · openCypher" .
  11. "ورشة عمل W3C حول توحيد معايير الويب لبيانات الرسوم البيانية. إنشاء جسور: RDF، ورسم بياني للخصائص، وSQL" . W3C . تم الاطلاع عليه بتاريخ 29 سبتمبر 2019 .
  12. "ISO/IEC WD 39075 تكنولوجيا المعلومات - لغات قواعد البيانات - GQL" . ISO . تم الاطلاع عليه بتاريخ 29 سبتمبر 2019 .
  13. "ISO/IEC JTC 1/SC 32 N 3007 - ISO/IEC NP 39075 تكنولوجيا المعلومات - لغات قواعد البيانات - GQL" . معهد المعايير البريطاني . تم الاطلاع عليه بتاريخ 29 سبتمبر 2019 .
  14. "Iso/Iec 39075:2024" .
  15. "محلل GQL" . GitHub . تم الاطلاع عليه في 18 يناير 2021 .
  16. "أول تطبيق بحثي للغة GQL من أولوف مورا في جامعة آيندهوفن للتكنولوجيا!" . ألاستير غرين . تم الاطلاع عليه في 18 يناير 2021 .
  17. "دلالات لغة GQL؛ لغة استعلام جديدة لرسوم بيانية الخصائص مُصاغة بشكل رسمي" (ملف PDF) . أولوف مورا . تم الاطلاع عليه بتاريخ 18 يناير 2021 .
  18. "AgensGraph" . bitnine.net . تم الاطلاع عليه بتاريخ 18-02-2025 .
  19. "المشاريع الحالية · openCypher" . opencypher.org . تم الاطلاع عليه بتاريخ 18 فبراير 2025 .