2009-11-17 9 views
10

Ho un database di biologia che vorrei interrogare. C'è anche una data banca di terminologia a cui ho accesso che ha predicati formalizzabili. Mi piacerebbe costruire un linguaggio di query per questo DB usando i predicati citati. Come faresti a riguardo? La mia soluzione è la seguente:Come si crea un linguaggio di query specifico del dominio?

  1. formalizzare i predicati
  2. tradurre in un linguaggio di interrogazione (SQL, SPARQL, dipende)
  3. Costruire un linguaggio specifico con ANTLR o altri tali strumenti
  4. Traduci la 3 a 2.

È un approccio valido? Ce ne sono di migliori? Ogni consiglio sarebbe molto apprezzato.

+0

Suona come un progetto interessante. –

+0

Il tuo cognome è davvero Thunk? Devi avere un'affinità naturale con Haskell;) http://stackoverflow.com/a/6274016/443219 –

risposta

4

Usa BNF per iniziare la semantica della lingua..GoldParser ti aiuterà giocando con la semantica e la sintassi (link qui: http://www.devincook.com/). Una volta che la semantica BNF è stata risolta, è possibile creare azioni basate sugli input, ad esempio, una sezione grammaticale bnf che riguarda l'estrazione di una composizione della classificazione genetica del trucco di un arto (non so se esiste, astratto esempio qui ma ottieni l'essenza) per una query particolare ... 'recupera le statistiche su un ramo dove l'arto è gamba', quindi dietro le quinte potresti rilasciare una selezione SQL su un alias o nome di colonna da una tabella predefinita ... I potrebbe essere sbagliato sull'approccio ... Spero che aiuti?

+0

Quindi suggerisci di definire prima la sintassi di dsl e poi il resto. Forse questa è la strada giusta da percorrere, guiderà il resto degli sforzi. E 'quello il tuo prendere? Grazie! –

+0

Sì, sarebbe la mia opinione su di esso. Felice di essere d'aiuto! :) – t0mm13b

2

Suggerisco di dare un'occhiata allo i2b2 framework, è un linguaggio di query grafico e una piattaforma del motore di query per i database dei pazienti.

E 'probabilmente difficile da afferrare tutti di prima, ma si prendono uno sguardo al cellulare CRC o webservice in là, vedrete come si avvicinavano generazione SQL da un linguaggio di query grafica clinica in un modo interessante (anche se, non così le prestazioni amichevole :))

-1

considerare l'utilizzo di Irony.NET da qui: Irony.NET

+0

La domanda non è specifica per la lingua –