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. Invalid indices raise an expression error.

This also prevents serialisation from silently dropping empty members. Where Jena's WKT reader cannot preserve them, the function reports an error.

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.

Add one-based direct member selection through geof:geometryN and
GeometryWrapper, retaining the selected member's datatype, SRS and layout.
Validate numeric indices and report invalid selections as expression errors.

Preserve empty members in GML results and dimensional markers in WKT.
Reject empty homogeneous Multi-geometry members that Jena's WKT reader
cannot round-trip rather than silently discarding them.

Include member-selection, serialization and Z/M regression tests.
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

1 participant