2010-11-24 4 views
3

過去数年間、私たちのデータベースを変更および検索するための私たちの内部APIの多くは、彼らが必要とするフロントエンドの特定のニーズとアプリケーションロジックにますます絡み合っています。この傾向に対処するため、私たちは徐々にそれらのAPIを安定した簡潔に指定されたインターフェイスを持つWebサービスに移行することに決めました。このステップのもう一つの理由は、APIが当初は伝統的なウェブサイト用に設計されていたが、AJAXアプリケーション、iPhoneアプリ、外部顧客などで使用されるようになったからだ。複雑な検索クエリを表現するためのXMLメタ言語はありますか?

このプロセスの詳細を確認しながら、私たちが提供する予定の主要機能の1つは、人、文書、場所などのさまざまな種類のリソースを使ったかなり複雑な検索です。

ここで、検索の詳細は検索スペースに大きく依存することは明らかです。しかし、普遍的なメタ概念はたくさんあります。たとえば、検索述語と階層構造(中括弧)とこれらの操作の優先ルールを結ぶ論理演算子。数値の範囲照会、文字列の正規表現照合などがあります。これらの概念が与えられると、XMLはすぐにクエリの適切な表現として気になります(DSLもそうですが、私たちの場合はそれが銃の大きすぎると思います)。

私の質問は、このようなクエリを表現するために独自のドメイン固有の方言をベースにすることができるXMLメタ言語ですか?あるいは、今のところ私たちの心を越えていない他の可能性はありますか?

答えて

1

次のスキーマが広くGISの世界で使用されます。ここでは

は例です:

<ogc:Filter xmlns:gml="http://www.opengis.net/gml"> 
    <ogc:And> 
     <ogc:PropertyIsGreaterThan> 
     <ogc:PropertyName>isoap:CreationDate</ogc:PropertyName> 
     <ogc:Literal>2007-07-31</ogc:Literal> 
     </ogc:PropertyIsGreaterThan> 
     <ogc:Or> 
     <ogc:PropertyIsEqualTo> 
      <ogc:PropertyName>isoap:Type</ogc:PropertyName> 
      <ogc:Literal>service</ogc:Literal> 
     </ogc:PropertyIsEqualTo> 
     <ogc:PropertyIsEqualTo> 
      <ogc:PropertyName>isoap:Type</ogc:PropertyName> 
      <ogc:Literal>application</ogc:Literal> 
     </ogc:PropertyIsEqualTo> 
     <ogc:PropertyIsEqualTo> 
      <ogc:PropertyName>isoap:Type</ogc:PropertyName> 
      <ogc:Literal>dataset</ogc:Literal> 
     </ogc:PropertyIsEqualTo> 
     </ogc:Or> 
    </ogc:And> 
    </ogc:Filter> 

これは、同様にdocument-としてリレーショナルデータベースで処理することができますLuceneのような全文索引作成機能を備えています。

+0

興味深いですね。一見すると、それは非常に基本的な仕様であるように見えますが。 (それ自体悪いことではありませんが、それは基本的なものなので、ニーズに合わせて再開発するのではなく、それを使用することで、それほど多くの仕事を節約することはできません)。 – n3rd

1

あなた自身の関数などで拡張することができますが、それは完全にXMLベースではありません( XMLで動作しますが、それ自体はXMLではありません)。

+0

興味深いクエリをサポートするのに十分強力なものは、おそらく信頼できないユーザーがクエリを書く場合には本当の問題を引き起こすほど強力なものになることにも注意してください。セキュリティモデルについて考えるときです。 –

+0

ポイントを獲得しました。セキュリティモデルも当然のことです。私はXQueryについて知っていますが、ある時点では、ある方法でSQLにクエリをマップする必要があるため、このケースでどのように適用できるかはわかりません。 XPathを使うのは理想的な選択ではないかもしれません(しかし、私は実際にその専門家ではありませんので、詳しくお気軽に!)。 – n3rd

+0

さて、XQueryはSQL for XMLのようなものです。 :-)実際には非常に能力があり、XPathの上に構築されています。しかし、私は展開でそれを使用することで個人的な経験はあまりありませんでした。私は計画していましたが、私の仕事は別の方向に横向きになりました(人生など)。 –

関連する問題