نيو4:اختياري 'خطوات' في الاستعلام سايفر

StackOverflow https://stackoverflow.com//questions/20001330

  •  20-12-2019
  •  | 
  •  

سؤال

أحاول العثور على علاقات بين العقد ذات العقد/العلاقات الاختيارية ولكن المحددة بينهما (نيو 4 ج 2.0 م 6).

في نموذج البيانات الخاص بي ،يمكن أن يكون 'الجين' جزءا من مجموعة 'أ'.لدي 'التفاعل' العلاقات بين 'الجينات' - 'الجينات' ، 'الجينات' - 'مجموعة' و 'مجموعة' - ' مجموعة '(الخطوط الحمراء في صورة نموذج).

أريد أن يغلي هذا وصولا الى جميع' التفاعل 'العلاقات بين'الجينات':كلاهما مباشر (Gene-INTERACT-Gene) وعبر واحد أو اثنين من 'مجموعة' (Gene-PARTOF-Group-INTERACT-Gene).


enter image description here


بالطبع هذا سهل مع استعلامات سايفر متعددة:

# direct INTERACT
MATCH (g1:Gene)-[r:INTERACT]-(g2:Gene) RETURN g1, g2
# INTERACT via one Group
MATCH (g1:Gene)-[:PARTOF]-(gr:Group)-[r:INTERACT]-(g2:Gene) RETURN g1, g2
# INTERACT via two Group
MATCH (g1:Gene)-[:PARTOF]-(gr1:Group)-[r:INTERACT]-(gr2:Group)-[:PARTOF]-(g2:Gene)
RETURN g1, g2

ولكن سيكون من الممكن لبناء استعلام سايفر واحد يأخذ اختياري 'خطوات المجموعة' في المسار?حتى الآن استخدمت فقط العلاقات الاختيارية و shortestPaths, ، ولكن ليس لدي أي فكرة عما إذا كان يمكنني تصفية واحد أو اثنين من العقد الاختيارية بين اثنين من الجينات.

هل كانت مفيدة؟

المحلول

يمكنك تعيين عمق بين صفر وواحد لكل من العلاقات التي تضيفها إلى المسار.جرب شيئا مثل

MATCH (g1:Gene)-[:PARTOF*0..1]-(gr1)-[:INTERACT]-(gr2)-[:PARTOF*0..1]-(g2:Gene) 
RETURN g1,g2

ولرؤية ما تبدو عليه المسارات المتطابقة بالفعل ، ما عليك سوى إرجاع المسار بأكمله

MATCH p=(g1:Gene)-[:PARTOF*0..1]-(gr1)-[:INTERACT]-(gr2)-[:PARTOF*0..1]-(g2:Gene) 
RETURN p

هناك القليل من الإزعاج بالإعلان عن تسميات العقدة للأجزاء الاختيارية من هذا النمط ، ومع ذلك ، يفترض هذا الاستعلام أن الجينات ليست جزءا من أي شيء آخر غير المجموعات ، وأنها تتفاعل فقط مع المجموعات والجينات الأخرى.إذا كان الجين يمكن أن يكون [:PARTOF] إلى شيء آخر ، ثم (gr1) سيتم ربط هذا الشيء ، ولم يعد الاستعلام موثوقا به.ببساطة إضافة بند حيث مثل

WHERE gr1:Group AND gr2:Group

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top