/ / Cypherova a Gremlinova gramatika a sémantika - databáza, cypher, grafové databázy, gremlin

Cypherova a Gremlinova gramatika a sémantika - databáza, cypher, graf-databázy, gremlin

Zaujímalo by ma, aké otázky som schopnýhrať s Cypherom a Gremlinom, ale nepodarilo sa mi nájsť úplnú gramatiku jazyka a jeho preklad do operatívnej sémantiky. Vie niekto, či existuje niečo, čo objasňuje výrazovú silu týchto jazykov?

odpovede:

1 pre odpoveď č. 1

Pre cypher je gramatika k dispozícii ako sadaScala súbory, ktoré používajú Parboiled knižnicu. Mali by ste byť schopní nájsť tieto súbory scala v repozitári neo4j github. Nie je to formálna gramatika ako taká, ale ak sa pozriete na zdrojové súbory, dostanete rovnaké pravidlá výroby, aké by ste očakávali od formálnej gramatiky. Nájdete to tu na github, Pozrieť sa do Query.scala ako východiskový bod toho, čo definuje Cypherov dotaz a aké sú jeho gramatické komponenty.

Pokiaľ ide o gremlin, neviem, ako to funguje, ale znovaMyslím, že musíte ísť na potápanie so zdrojovým kódom, je pravdepodobné, že aj oni používajú nejaký syntaktický analyzátor, v ktorom bude gramatika účinne v kóde.

Vaša otázka týkajúca sa výrazovej sily je trochuvágne; stačí povedať, že cypher je deklaratívny jazyk (zameriava sa na to, čo sa má vrátiť, nešpecifikuje, ako sa má prechádzať), gremlin mi pripadá ako deklaratívny jazyk (v tom, že sa v ňom uvádza, ako postupovať moreso ako údaje, ktoré sa majú vrátiť) Na konci sú obaja úplní, takže zatiaľ čo ich štýly sú úplne odlišné, jeden nie je v žiadnom formálnom zmysle „mocnejší“ ako druhý.

V závislosti od konkrétnej úlohy, ktorú robíte,a kontextové vymedzenie pojmu „mocný“, jeden by mohol byť silnejší ako druhý. Povedzte, že to, čo chcete urobiť, je prvé vyhľadávanie stromu po šírke niečoho konkrétneho. V tomto prípade je najlepší prístup zameraný na priechod, možno lepší je gremlin, pretože Cypher vám neumožňuje určiť poradie priechodu. Na druhej strane povedzme, že chcete vyjadriť komplexný dopyt po ceste, ktorý vráti určitú dátovú položku bez ohľadu na to, o tom, kde je v grafe. Potom je pravdepodobne pravdepodobne silnejší, pretože sa zameriava na „čo“, nie „ako“.