2009-11-17 20 views
10

Tôi có một cơ sở dữ liệu sinh học mà tôi muốn truy vấn. Ngoài ra còn có một ngân hàng thuật ngữ cụ thể mà tôi có quyền truy cập vào đó có các biến vị ngữ có thể chỉnh sửa được. Tôi muốn xây dựng một ngôn ngữ truy vấn cho DB này bằng cách sử dụng các vị từ được đề cập. Làm thế nào bạn sẽ đi về nó? Giải pháp của tôi là như sau:Làm cách nào để tạo ngôn ngữ truy vấn theo miền cụ thể?

  1. chính thức hóa các vị từ
  2. dịch sang một ngôn ngữ truy vấn (sql, SPARQL, phụ thuộc)
  3. Xây dựng một ngôn ngữ cụ thể với ANTLR hoặc các công cụ khác như
  4. Dịch từ 3 đến 2.

Đây có phải là phương pháp hợp lệ không? Có cái nào tốt hơn không? Bất kỳ con trỏ nào cũng sẽ được đánh giá cao.

+0

Nghe như một dự án thú vị. –

+0

Họ của bạn có thực sự là Thunk không? Bạn phải có một mối quan hệ tự nhiên với Haskell;) http://stackoverflow.com/a/6274016/443219 –

Trả lời

4

Sử dụng BNF để bắt đầu với ngữ nghĩa ngôn ngữ..GoldParser sẽ giúp bạn bằng cách chơi xung quanh với ngữ nghĩa và cú pháp (liên kết tại đây: http://www.devincook.com/). Một khi bạn có các ngữ nghĩa BNF được sắp xếp, bạn có thể xây dựng các hành động dựa trên các đầu vào, ví dụ, một phần ngữ pháp bnf xử lý việc trích xuất thành phần phân loại trang điểm di truyền của chi (tôi không biết liệu nó có tồn tại hay không) ví dụ ở đây nhưng bạn lấy được ý chính) cho một truy vấn cụ thể ... 'lấy số liệu thống kê trên chi, nơi chân tay là', sau đó hậu trường bạn sẽ đưa ra một câu lệnh SQL trên một bí danh hoặc tên từ một bảng được xác định trước ... có thể là sai về cách tiếp cận ... Hy vọng nó sẽ giúp?

+0

Vì vậy, bạn đề nghị tôi xác định cú pháp của dsl đầu tiên, và sau đó phần còn lại. Có lẽ đây là con đường đúng để đi, nó sẽ hướng dẫn phần còn lại của những nỗ lực. Đó có phải là của bạn? Cảm ơn! –

+0

Vâng, đó sẽ là của tôi đưa vào nó. Vinh dự khi được giup bạn! :) – t0mm13b

2

Tôi đề nghị bạn hãy xem i2b2 framework, đó là ngôn ngữ truy vấn đồ họa và nền tảng công cụ truy vấn cho cơ sở dữ liệu bệnh nhân. Có lẽ rất khó để nắm bắt tất cả trước tiên nhưng hãy nhìn vào tế bào CRC hoặc webservice trong đó, bạn sẽ thấy cách họ tiếp cận thế hệ SQL từ một ngôn ngữ truy vấn đồ họa lâm sàng một cách thú vị (mặc dù, không phải như vậy hiệu suất thân thiện :))

-1

Xem xét sử dụng Irony.NET từ đây: Irony.NET

+0

Câu hỏi không phải là ngôn ngữ cụ thể –

Các vấn đề liên quan