Skip to content

GH-4230: Add GeoSPARQL 1.1 geometryN function - #4231

Open
edmondchuc wants to merge 1 commit into
apache:mainfrom
edmondchuc:feat/geosparql/geometry-n-function
Open

edmondchuc wants to merge 1 commit into
apache:mainfrom
edmondchuc:feat/geosparql/geometry-n-function

Conversation

@edmondchuc

@edmondchuc edmondchuc commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

GitHub issue resolved #4230

Adds the GeoSPARQL 1.1 geof:geometryN function, also available through GeometryWrapper.getGeometryN(int).

The index is one-based and selects direct members without flattening nested collections. For example,

geof:geometryN("MULTIPOINT ((1 2), (3 4))"^^geo:wktLiteral, 2)

returns POINT (3 4).

Selected members retain their source datatype, SRS, and coordinate layout. Indices must have datatype xsd:integer or an integer-derived datatype. Invalid indices raise an expression error.

This also prevents serialisation from silently dropping empty members and adds WKT reader support for empty members in Multi-geometries.

Depends on #4222 for the coordinate-sequence fixes needed to preserve Z/M values. All tests should pass once this branch is rebased after #4222 merges.


  • Tests are included.
  • Documentation change and updates are provided for the Apache Jena website
  • Commits have been squashed to remove intermediate development commit messages.
  • Key commit messages start with the issue number (GH-xxxx)

By submitting this pull request, I acknowledge that I am making a contribution to the Apache Software Foundation under the terms and conditions of the Contributor's Agreement.


See the Apache Jena "Contributing" guide.

@edmondchuc
edmondchuc force-pushed the feat/geosparql/geometry-n-function branch 3 times, most recently from 26a3a9f to 5bbe8db Compare September 17, 2026 05:58
Add one-based member selection through geof:geometryN, retaining the selected member's datatype, SRS and layout. Accept only xsd:integer indexes, including integer-derived types such as xsd:short. Round-trip empty members in homogeneous WKT Multi geometries, including empty aggregates whose Z/M/ZM marker differs from the enclosing collection, and empty GML polygons whose CRS is 3D.
@edmondchuc
edmondchuc force-pushed the feat/geosparql/geometry-n-function branch from 37b5b05 to 4a6c59c Compare September 17, 2026 10:52
@afs

afs commented Sep 21, 2026

Copy link
Copy Markdown
Member

I see changes to the GML and WKT readers and writers.

Is existing the test suite coverage (org/apache/jena/geosparql/implementation/parsers/) sufficient?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add GeoSPARQL 1.1 geof:geometryN function

2 participants