Ваш пример, слегка переформатированный и использующий обычные сокращения черепах:
ex:polygon_ABCD rdf:type ex:ExampleEntity ;
geo:hasGeometry ex:geometry_polygon_ABCD .
ex:geometry_polygon_ABCD a geo:Geometry, sf:Polygon ;
geo:asWKT "<opengis.net/def/cs/EPSG/0/4499> Polygon((389.0 1052.0, 563.0 1052.0, 563.0 1280.0, 389.0 1280.0, 389.0 1052.0))"^^geo:wktLiteral .
ex:point_E rdf:type ex:ExampleEntity ;
geo:hasGeometry ex:geometry_point_E .
ex:geometry_point_E a geo:Geometry, sf:Point ;
geo:asWKT "<opengis.net/def/cs/EPSG/0/4499> Point(400.0 1100.0)"^^geo:wktLiteral ; .
Вы должны использовать определенный URL-адрес для CRS и не можете пропустить http:
, поэтому правильный URL-адрес - http://www.opengis.net/def/crs/EPSG/0/4499.
Но из возвращенного описания видно, что этот CRS можно использовать в «Китае - на суше и на море между 120 ° и 126 ° в.д.».Я не эксперт в гео-проекциях, поэтому я не могу гарантировать, что этот CRS удовлетворит вашу потребность: «оставьте мои координаты в покое, они всего лишь метры».Я бы искал CRS в Великобритании (OrdnanceSurvey) с координатами на восток и на север.
Чтобы узнать, как форматировать GML:
- , см. Спецификацию GeoSPARQL (OGC 11-052r4) p18, который приводит пример о
gml:Point
. - затем Google для
gml:Polygon
.Есть много ссылок, но одна из них дает примеры: http://www.georss.org/gml.html
Вооружившись этими знаниями, мы можем переформатировать ваш пример в GML:
ex:polygon_ABCD rdf:type ex:ExampleEntity ;
geo:hasGeometry ex:geometry_polygon_ABCD .
ex:geometry_polygon_ABCD a geo:Geometry, sf:Polygon ;
geo:asGML """
<gml:Polygon xmlns:gml="http://www.opengis.net/gml" srsName="http://www.opengis.net/def/crs/EPSG/0/TODO">
<gml:exterior>
<gml:LinearRing>
<gml:posList>
389.0 1052.0, 563.0 1052.0, 563.0 1280.0, 389.0 1280.0, 389.0 1052.0
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
"""^^geo:gmlLiteral.
ex:point_E rdf:type ex:ExampleEntity ;
geo:hasGeometry ex:geometry_point_E .
ex:geometry_point_E a geo:Geometry, sf:Point ;
geo:asGML """
<gml:Point xmlns:gml="http://www.opengis.net/gml" srsName="http://www.opengis.net/def/crs/EPSG/0/TODO">
<gml:pos>
400.0 1100.0
</gml:pos>
</gml:Point>
"""^^geo:gmlLiteral.
-
"""
(длинная цитата) позволяет нам использовать "
внутри литерала без кавычек - заменить
TODO
на лучший выбранный вами CRS - документация http://graphdb.ontotext.com/documentation/master/enterprise/geosparql-support.html#geosparql-examples дает примерпохож на ваш, но немного обманывает, потому что все координаты находятся в диапазоне (-90, + 90), поэтому он может просто использовать WGS.
- после отладки с использованием функций топологии
geof:
, включите индексирование и включитена geo:
предикаты, потому что функции медленные (они проверяют каждую геометрию на предмет друг друга), в то время как предикаты используют специальный геоиндекс
Дайте мне знать, как это происходит!