2014-03-28 79 views
2

我正在尋找一種方法來獨立於編程語言或集合的種類來定義集合上的查詢。是否有一種通用的查詢語言,用於獨立於編程語言的任意集?

具體,這將是一個語言定義和像Java,C++,Python的等

正如評論我尋找一個數據庫或一組代表性的任何實現,但共同的語言實現只有通過定義才能查詢元素來自例如一個std::set/vector Python set()或任何可以看作一個集合的線性結構。

一個接近的例子就像jLinq,但沒有綁定到JSON或JavaScript,並有一個良好定義的字符串表示。

當然,如果不知道數據結構的類型,您將不得不爲每個問題和每種編程語言實現任何條件過濾器,但是構造查詢字符串的方式以及如何評估它們將是明確的,您不必編寫解析器。

所以想什麼,我在Java或C++寫的是一樣的東西

q = query() 
.created_after("14.03.2010") 
.and(contains("hello") 
    .or(contains("hallo"))) 
.sort("caption") 

或作爲字符串寫入:

"(created_after("14.03.2010") and (contains("hello") or contains("hallo"))) sort("caption")" 

(這不是經過深思熟慮 - 只是爲了說明什麼一個接口可能看起來像)

不同問題的一個很好的例子是JSON或XML:清晰的語言定義和任何平臺或編程語言的解析器/工具。

+0

那麼,一個數據庫?幾乎有十億美元的產業和幾個主要的開源項目解決了這個問題的許多變化。 – delnan

+0

不,我不是在尋找一個數據庫,而是尋找一個通用集的標準查詢語言(而不是數據庫中的表和字段) – frans

+0

爲什麼你不能將這些集建模爲表並編寫SQL查詢? – delnan

回答

1

我知道這是一個古老的問題,但我想我知道你的意思,我實際上是在尋找類似的東西。你需要的是一個「搜索查詢解析器」。我發現search-query-parser爲nodejs(我不是作者)。有沒有嘗試過,但看在Docs是非常illustraring promising.The例如,您可以從UI

from:[email protected],[email protected] to:me subject:vacations date:1/10/2013-15/04/2014 photos 

接收輸入字符串,該庫將其解析爲結構化JSON對象

{ 
    from: ['[email protected]', '[email protected]'], 
    to: 'me', 
    subject: 'vacations', 
    date: { 
    from: '1/10/2013', 
    to: '15/04/2014' 
    }, 
    text: 'photos' 
} 

而從那個對象,你可以構造併發出一個查詢命令到你的數據庫。正如你可以看到它處理列表和範圍。馬上我看不到任何布爾運算符(AND,OR),但我想可以很容易地實現。

希望這會有所幫助。

相關問題