繁体   English   中英

是否有用于表达复杂搜索查询的XML元语言?

[英]Is there a XML meta language for expressing complex search queries?

在过去几年中,我们用于修改和搜索数据库的许多内部API已经越来越多地与它们所支持的前端的特定需求和应用逻辑纠缠在一起。 为了应对这种趋势,我们决定逐步将这些API移动到具有稳定且简洁的接口的Web服务。 这一步的另一个原因是API最初是为传统网站设计的,而现在它们越来越多地被AJAX应用程序,iPhone应用程序,外部客户等使用。

在计算这个过程的细节时,我们已经意识到我们计划提供的主要功能之一是通过各种类型的资源(例如人员,文档和位置)进行相当复杂的搜索。

现在,很明显搜索的细节很大程度上取决于搜索空间。 然而,有许多普遍存在的元概念。 例如,逻辑运算符连接搜索谓词和这些操作的层次结构(大括号)和优先级规则; 范围查询数值,正则表达式匹配字符串,等等。 鉴于这些概念,XML立即浮现在脑海中,作为查询的充分表示(DSL也是如此,但我认为在我们的案例中,这个版本太大了)。

所以我的问题是:是否有一种XML元语言可以基于我们自己的,特定于域的方言来表达这样的查询? 还是有其他可能性到目前为止还没有超越我们的想法?

XQuery可以使用您自己的函数等进行扩展,但这并不是完全基于XML的(它适用 XML,但本身并不是XML)。

以下模式在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>

这可以在关系数据库以及面向文档的数据库或像Lucene这样的全文索引中处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM