Я не использовал GeoSPARQL, поэтому не могу многое из этого решить, но, во-первых, такой запрос, как
SELECT ?geom WHERE {
?x my:exactGeometry ?xGeom .
?xGeom geo:asWKT ?geom .
}
по умолчанию будет возвращать одно значение для ?geom
для каждого способа сопоставления шаблона графика. Например, если граф содержит
_:x1 my:exactGeometry _:xGeom1 .
_:xGeom1 geo:asWKT _:geom .
_:x2 my:exactGeometry _:xGeom2 .
_:xGeom2 geo:asWKT _:geom .
так что есть два совпадающих шаблона (один с ?x = _:x1
и ?xGeom = _:xGeom1
, а другой с ?x = _:x2
и ?xGeom = _:xGeom2
), вы увидите _:geom
в результатах дважды. Вы можете удалить такие дубликаты, используя distinct
в своем запросе:
SELECT DISTINCT ?geom WHERE {
?x my:exactGeometry ?xGeom .
?xGeom geo:asWKT ?geom .
}
Во-вторых, как я уже упоминал, я не являюсь пользователем GeoSPARQL, но подозреваю, что спецификация просто определяет, что должны делать эти функции расширения. Если вы не загрузили какой-либо код (например, плагин Protégé), я не вижу, где можно было бы обеспечить реализацию этих функций. Расширения SPARQL должны предоставляться реализацией конечной точки SPARQL; они не определены в загружаемых вами онтологиях или данных, которые вы запрашиваете. В статье Википедии о GeoSPARQL есть раздел Реализации, в котором перечислены три реализации, поддерживающие GeoSPARQL. Одним из них является парламент, о котором вы упомянули, но не упомянули, не работают ли функции в Protégé или в парламенте.
person
Joshua Taylor
schedule
03.09.2013
geof:sf
функций при запросе с помощью Parliament или Protégé? - person Joshua Taylor   schedule 03.09.2013