Cypher

**Cypher** — deklarativ grafik soʻrovlar tili boʻlib, u xususiyat grafigida ekspressiv va samarali maʼlumotlarni soʻrash imkonini beradi.

Cypher asosan 2011-yilda Neo4j, Inc. (sobiq Neo Technology) kompaniyasida ishlayotgan Andreas Taylorning ixtirosi edi Cypher dastlab Neo4j grafik maʼlumotlar bazasi bilan foydalanish uchun moʻljallangan edi, lekin 2015-yil oktyabr oyida openCypher loyihasi orqali ochildi.

Til SQL quvvati va imkoniyatlarini hisobga olgan holda ishlab chiqilgan (ilovaviy maʼlumotlar bazasi modeli uchun standart soʻrovlar tili), lekin Cypher grafik nazariyasi tushunchalari asosida qurilgan maʼlumotlar bazasi komponentlari va ehtiyojlariga asoslangan edi. Grafik modelida maʼlumotlar tugunlar (matematika va tarmoq fanidagi choʻqqilar) va munosabatlar (matematika va tarmoq fanlaridagi qirralar) sifatida tuzilgan boʻlib, maʼlumotlardagi ob’ektlar bir-biri bilan qanday bogʻlangan va bogʻlangan.

## Grafik modeli
Cypher Property Graph Model ga asoslangan boʻlib, u maʼlumotlarni tugunlar va qirralarga (Cypherda „munosabatlar“ deb ataladi) tashkil qiladi. Tugunlar va munosabatlarning standart grafik elementlariga qoʻshimcha ravishda, xususiyat grafik modeli maʼlumotlarning nozik toifalari va atributlarini tavsiflash uchun teglar va xususiyatlarni qoʻshadi.

Tugunlar grafikdagi ob’ektlardir. Ular xossalar deb ataladigan istalgan sonli atributlarni (kalit-qiymat juftlari) saqlashi mumkin. Tugunlar domendagi turli rollarini ifodalovchi nol yoki undan ortiq yorliqlar (teglar yoki toifalar kabi) bilan belgilanishi mumkin. Aloqalar ikkita tugun ob’ekti oʻrtasidagi yoʻnaltirilgan, nomli, semantik jihatdan tegishli aloqalarni taʼminlaydi. Oʻzaro munosabatlar har doim yoʻnalishga, boshlangʻich tugunga, yakuniy tugunga va aynan bitta aloqa turiga ega. Tugunlar kabi munosabatlar ham xususiyatlarga ega boʻlishi mumkin.

Yorliqlar nol yoki undan ortiq tugun belgilarini belgilash orqali oʻxshash tugunlarni guruhlashi mumkin. Yorliqlar teglarga oʻxshaydi va izlash yoki yaratish uchun muayyan turdagi ob’ektlarni belgilash imkonini beradi. Xususiyatlar qatorli kalit va Cypher tipidagi tizimning baʼzi qiymatini bogʻlaydigan kalit-qiymat juftliklari. Cypher soʻrovlari belgilangan naqshda topilgan maʼlumotlarni yaratish, oʻqish, yangilash, oʻchirish uchun teglar va xususiyatlar boʻyicha har qanday belgilangan filtrlash bilan tugunlar va munosabatlar naqshlari bilan yigʻiladi.

### Kalit soʻzlar
Boshqa soʻrovlar tillariga oʻxshab, Cypher naqshlarni belgilash, naqshlarni filtrlash va natijalarni qaytarish uchun turli xil kalit soʻzlarni oʻz ichiga oladi. Eng keng tarqalganlar orasida: MATCH, WHERE va RETURN. Bular SQLda SELECT va WHERE dan biroz farq qiladi; ammo, ular oʻxshash maqsadlarga ega.

MATCH tugunlar, aloqalar yoki tugunlar va munosabatlar kombinatsiyalarini topish uchun qidiruv sxemasini tavsiflashdan oldin ishlatiladi**. Cypher**'da WHERE naqshlarga qoʻshimcha cheklovlar qoʻshish va kiruvchi naqshlarni filtrlash uchun ishlatiladi. Cypher’s RETURN formatlari va natijalarni qanday chiqarish kerakligini tartibga soladi. Boshqa soʻrovlar tillarida boʻlgani kabi, natijalarni maʼlum xususiyatlar, roʻyxatlar, buyurtma va boshqalar bilan qaytarishingiz mumkin.

## Cypher ilovalari
Cypher Neo4j maʼlumotlar bazasida, SAP’ning HANA Graph, Redis Graph. Cambridge Semantics' Anzograph. Bitnineʼs AgensGraph Memgraph va ochiq kodli Cypher for Gremlin loyihalarida amalga oshiriladi. Rigadagi Neueda Labs va Cypher for Apache Spark (hozirda Morpheus deb oʻzgartirilgan) tomonidan hamda Cypher kabi tadqiqot loyihalarida saqlanmoqda.

## Manbalar