<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>ABOUT LANGUAGES OF SEARCH QUERIES FOR SPATIAL DATA Oleg L. Zhizhimov</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Computational Technologies SB RAS</institution>
          ,
          <addr-line>Novosibirsk</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <fpage>87</fpage>
      <lpage>91</lpage>
      <abstract>
        <p>On a simple example of a query for searching by spatial characteristics, some languages of search queries are considered. Some weak and strong sides of the search query languages are discussed.</p>
      </abstract>
      <kwd-group>
        <kwd>search query languages</kwd>
        <kwd>spatial data</kwd>
        <kwd>SQL</kwd>
        <kwd>CQL</kwd>
        <kwd>SparQL</kwd>
        <kwd>PQF</kwd>
        <kwd>RPN</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Жижимов О.Л.</p>
      <p>Институт вычислительных технологий СО РАН, Новосибирск
На простом примере запроса для поиска по пространственным характеристикам рассмотрены
некоторые языки поисковых запросов. Обсуждаются некоторые слабые и сильные стороны языков
поисковых запросов.</p>
      <p>Ключевые слова: языки поисковых запросов, пространственные данные, SQL, CQL, SparQL,
PQF, RPN.</p>
      <p>Введение. Традиционно языки поисковых запросов попадают в две группы: мощные,
выразительные языки, не очень легко читаемые и не очень удобные для построения запросов
неспециалистами (например, SQL, PQF и XQuery), или простые и интуитивные языки,
недостаточно мощные для выражения сложных понятий (например, CCL и Google). Ниже
рассмотрены некоторые языки поисковых запросов, которые содержат функциональность поиска по
записям баз данных, содержащих пространственные характеристики. Список рассмотренных
языков не является полным. Более того, в нем содержаться только те языки, которые
соответствуют некоторым отраслевым или международным стандартам.</p>
      <p>Полное описание каждого языка, а также рассмотрение всех возможностей и
недостатков, выходит за рамки настоящего доклада. Однако, основные свойства могут быть
проиллюстрированы на простых примерах. Поэтому для каждого языка приводится один простой
пример – сформулировать запрос для поиска всех записей, имеющих отношение к области,
ограниченной поисковым термом. При этом поисковый терм представляет собой прямоугольник.</p>
      <p>
        SQL. Язык запросов SQL (Structured Query Language) является стандартным языком
запросов для реляционных СУБД. Вполне естественно, что в этот язык были включены
расширения, которые позволяют оперировать с пространственными данными. Формально эти
расширения основаны на спецификациях OGC [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] и оформлены в виде документов ISO [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Однако, реализации этих расширений для различных СУБД различны.
      </p>
      <p>Пример 1. Найти все записи, имеющие отношение к области, ограниченной указанным
термом:
Для PostgreSQL (без расширений):
select * from my_table</p>
      <p>where the_field &amp;&amp; box '((52.2,80.3),(50.8,81.0))';
Для MySQL:
select * from my_table where MBROverlaps(the_geom,</p>
      <p>ST_GeomFromText('LINESTRING (52.2 80.3, 50.8 81.0)');
select * from my_table where ST_Overlaps(the_geom,</p>
      <p>LINESTRING (52.2 80.3, 50.8 81.0));
Для MS SQL Server:
select * my_table where
the_geom.STIntersection(geometry::STGeomFromText(</p>
      <p>'LINESTRING (52.2 80.3, 50.8 81.0)', 0));
Несомненно, SQL с учетом расширений предоставляет мощные средства работы с
пространственными данными. К сожалению, привязка синтаксиса языка к названиям конкретных
полей и таблиц, а также различия в реализациях для различных СУБД, делает этот язык
малопригодным для распределенных разнородных систем, т.к. в этом случае требуется выполнение
одного и того же запроса для различных СУБД.</p>
      <p>CQL. Следует заметить, что под аббревиатурой CQL встречается более десятка
различных типов поисковых запросов. В таблице приведены некоторые из них.</p>
      <p>Аббревиатура CQL и языки поисковых запросов.</p>
      <p>
        CQL - Contextual Query Language [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] Contextual Query Language является формальным
языком для представления запросов к
информационно-поисковым системам (веб-индексы,
библиографические каталоги, электронные библиотеки и
репозитории, и др.). Язык ориентирован на
удобочитаемость и интуитивность при сохранении
выразительности более сложных языков запросов.
      </p>
      <p>
        CQL - Common Query Language [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] Язык запросов, созданный OGC для сервисов
каталогов. Это человекочитаемый язык запросов и
его синтаксис очень похож на синтаксис SQL, но с
чрезвычайно ограниченными функциями.
      </p>
      <p>
        CQL - The Corpus Query Language [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] Специальный язык запросов, используемый в
Sketch Engine для поиска сложных
грамматических или лексических шаблонов или для
использования критериев поиска, которые невозможно
установить с помощью стандартного
пользовательского интерфейса.
      </p>
      <p>
        CQL - The Cassandra Query Language [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] Cassandra Query Language предлагает модель,
близкую к SQL в том смысле, что данные
помещаются в таблицах, содержащей строку из столбцов.
      </p>
      <p>
        CQL - Continuous Query Language [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] Continuous Query Language поддерживается
STREAM – прототипом Data Stream Management
System в Стэнфорде. CQL – это экспрессивный
декларативный язык на основе SQL для регистрации
непрерывных запросов для потоков и
обновляемых отношений.
      </p>
      <p>
        CQL - Constraint Query Language [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] Constraint Query Language – это Prolog интерфейс
к SQL базам данных.
      </p>
      <p>
        CQL - Oracle Continuous Query Language Oracle Continuous Query Language (Oracle CQL) –
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] язык, основанный на SQL с добавлением
конструкций для поддержки потоковых данных.
      </p>
      <p>
        Здесь и ниже аббревиатура CQL будет сопровождаться указанием индекса по таблице 1.
Наиболее универсальным является CQL-1 (Contextual Query Language). Именно этот язык
запросов используется в технологиях SRW/SRU [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], которые на сегодняшний день являются
максимально адаптированными для использования в распределенных гетерогенных
информационных системах.
      </p>
      <p>Пример 2. Найти все записи, имеющие отношение к области, ограниченной указанным
термом:
В отличие от CQL-1, язык CQL-2 (Common Query Language) был разработан OGC для
работы в том числе и с пространственными данными. Несмотря на наличие некоторых общих
конструкций с CQL-1, CQL-2 отличается от него способом обращения с пространственными
данными, при этом операции отношения представляются в виде специальных операторов
(функций):</p>
      <p>EQUALS, DISJOINT, INTERSECTS, TOUCHES, CROSSES,</p>
      <p>WITHIN, CONTAINS, OVERLAPS, RELATE, DWITHIN, BEYOND
Существенное отличие CQL-2 (и его расширения ECQL) от CQL-1 – использование в
запросах не абстрактных индексов (CQL-1) или поисковых атрибутов (PQF, см. ниже), а
названий реальных полей таблиц баз данных, содержащих пространственную информацию. При</p>
      <p>INTERSECTS (the_geom, 52.2, 80.3, 50.8, 81.0)
Здесь the_geom – название поля, содержащего пространственную информацию.</p>
      <p>Остальные языки запросов с общим названием CQL из таблицы 1 прямого отношения к
пространственным данным не имеют.</p>
      <p>
        SparQL. Развитие технологий Semantic Web и хранилищ Open Linked Data (LOD) не
могло оставить в стороне возможность использования языка запросов SparQL для поиска
информации, связанной с пространственными характеристиками объектов. Разработан документ
OGC [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], который регламентирует расширения SparQL для работы с пространственными
данными. В качестве иллюстрации ниже приведен пример запроса GeoSparQL.
      </p>
      <p>Пример 4. Найти все записи, имеющие отношение к области, ограниченной указанным
термом:</p>
      <p>PREFIX my: &lt;http://example.org/ApplicationSchema#&gt;
PREFIX geo: &lt;http://www.opengis.net/ont/geosparql#&gt;
PREFIX geof: &lt;http://www.opengis.net/def/function/geosparql/&gt;
SELECT ?f</p>
      <p>WHERE { ?f my:hasPointGeometry ?fGeom .</p>
      <p>?fGeom geo:asWKT ?fWKT .</p>
      <p>
        FILTER (geof:sfWithin(?fWKT,
"&lt;http://www.opengis.net/def/crs/OGC/1.3/CRS84&gt;
Polygon ((52.2 80.3, 52.2 81.0,
50.8 81.0, 50.8 80.3,
52.2 80.3))"^^geo:wktLiteral))
}
Трудно сказать, насколько удобен и выразителен этот язык. Однако есть мнение, что
популярность технологий Semantic Web со временем будет возрастать. Список существующих
реализаций поддержки GeoSparQL можно найти по ссылке [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>
        PQF. Язык запросов PQF (Prefix Query Format) [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] разработан для текстового
представления поисковых запросов RPN-1 (Reverse Polish Notation), применяемых в ISO-23950 и CIP.
В основу языка положены наборы абстрактных поисковых атрибутов, которые отражают
семантику поисковых термов, правила сравнения и ограничения области поиска. Каждый набор
поисковых атрибутов имеет глобальный идентификатор (OID), регистрируемый в
соответствующем агентстве. На сегодняшний день поисковые атрибуты для пространственного
поиска включены в наборы атрибутов bib-1 (1.2.840.10003.3.1), gils (1.2.840.10003.3.5), geo
(1.2.840.10003.3.9) и cip (1.2.840.10003.3.1000.99.1).
      </p>
      <p>Пример 5. Найти все записи, имеющие отношение к области, ограниченной указанным
термом – прямоугольной областью, заданной координатами:
1) @attrset geo @attr 1=2060</p>
      <p>@attr 2=7 @attr 4=202 ((52.2, 80.3), (50.8, 81.0))
2) @attr 1=1117</p>
      <p>@attr geo 2=7 @attr geo 4=202 ((52.2, 80.3), (50.8, 81.0))
Следует заметить, что язык запросов PQF (RPN-1) не привязан ни к конкретной модели
данных, ни, тем более, к конкретной структуре данных. Это обеспечивает его высокую
универсальность и возможность использования в распределенных гетерогенных
информационных системах. Однако в виду высокой сложности реализации сегодня популярность этого
языка падает, уступая лидерство более простому CQL-1.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>OGC</given-names>
            <surname>- Open Geospatial</surname>
          </string-name>
          Consortium. http://www.opengeospatial.
          <source>org/ (дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Geographic</surname>
          </string-name>
          information
          <article-title>-Simple feature access-Part 2: SQL option</article-title>
          ,
          <source>ISO 19125-2</source>
          :
          <year>2004</year>
          , http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.
          <source>htm?csnumber=40115 (дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>CQL - The Contextual</surname>
          </string-name>
          Query Language. https://www.loc.gov/standards/sru/cql/ (
          <source>дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>[4] CQL and ECQL</article-title>
          . http://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.
          <source>html (дата об- ращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>CQL</given-names>
            <surname>- Corpus Query</surname>
          </string-name>
          Language. https://www.sketchengine.co.uk/documentation/corpus-querying
          <source>/ (дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>The</given-names>
            <surname>Cassandra Query</surname>
          </string-name>
          <article-title>Language (CQL)</article-title>
          . http://cassandra.apache.org/doc/latest/cql/index.
          <source>html (дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Arasu</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Babu</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Widom</surname>
            <given-names>J</given-names>
          </string-name>
          .
          <article-title>The CQL continuous query language: semantic foundations</article-title>
          and query execution // The VLDB Journal - The
          <source>International Journal on Very Large Data Bases</source>
          ,
          <year>2006</year>
          . v.
          <volume>15</volume>
          , n.2, p.
          <fpage>121</fpage>
          -
          <lpage>142</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>CQL</given-names>
            <surname>- Constraint Query</surname>
          </string-name>
          Language - http://www.swi-prolog.org/pldoc/man?section=
          <source>cql (дата обра- щения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Oracle</given-names>
            <surname>CEP CQL Language</surname>
          </string-name>
          <article-title>Reference</article-title>
          .
          <source>11g Release</source>
          <volume>1</volume>
          (
          <issue>11</issue>
          .1.1). https://docs.oracle.com/cd/E16764_01/doc.1111/e12048/intro.
          <source>htm (дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10] SRU- Search/Retrieve via URL - http://www.loc.gov/standards/sru/index.
          <source>html (дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <source>[11] GeoServer 2</source>
          .12.x User Manual / Open Source Geospatial Foundation http://docs.geoserver.org/latest/en/user/index.
          <source>html (дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>OGC GeoSPARQL - A Geographic Query</surname>
          </string-name>
          <article-title>Language for RDF Data / OGC 11-</article-title>
          052r4,
          <year>2012</year>
          , https://portal.opengeospatial.org/files/?artifact_id=47664
          <source>(дата обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>GeoSPARQL. WikipediA</surname>
          </string-name>
          , https://en.wikipedia.org/wiki/GeoSPARQL (дата
          <source>обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>Prefix</given-names>
            <surname>Query</surname>
          </string-name>
          <article-title>Format / Index Data</article-title>
          . http://www.indexdata.com/yaz/doc/tools.html#
          <source>PQF (дата обра- щения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Жижимов</surname>
            <given-names>О.Л.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Федотов</surname>
            <given-names>А</given-names>
          </string-name>
          .М.,
          <string-name>
            <surname>Шокин</surname>
            <given-names>Ю</given-names>
          </string-name>
          .И.
          <article-title>Платформа ZooSPACE - организация доступа к разнородным распределенным ресурсам // Электронные библиотеки</article-title>
          .
          <source>- 2014</source>
          . -
          <fpage>Т</fpage>
          .
          <year>17</year>
          . -
          <fpage>№</fpage>
          2.
          <string-name>
            <surname>- ISSN</surname>
          </string-name>
          1562-
          <fpage>5419</fpage>
          . - http://www.elbib.ru/index.phtml?page=elbib/rus/journal/2014/part2/ZFS (дата
          <source>обращения 20.07</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>