Proposal to Implement GeoSPARQL in Marmotta

This project will implement support for GeoSPARQL in KiWi, inspired by MARMOTTA-584. Further details at https://www.google-melange.com/gsoc/project/details/google/gsoc2015/fernandobac03/5707702298738688

Original code at https://github.com/cuent/marmotta/tree/MARMOTTA-584, patch is being integrated at branch MARMOTTA-584.

GeoSPARQL

The OGC GeoSPARQL standard supports representing and querying geospatial data on the Semantic Web. GeoSPARQL defines a vocabulary for representing geospatial data in RDF, and it defines an extension to the SPARQL query language for processing geospatial data. In addition, GeoSPARQL is designed to accommodate systems based on qualitative spatial reasoning and systems based on quantitative spatial computations. Source : http://www.opengeospatial.org/standards/geosparql here

Documentation

Implementation of GeoSPARQL in the KiWi TipleStore

Here is a list of GeoSPARQL functions that are implemented on KiWi:

SF FUNCTIONS

FUNCTION

TYPE

DESCRIPTION

STATUS

SYNTAX

VIEW

INTERSECTS

Boolean

Returns TRUE if geom1 intersect with geom2 geometry

Implemented

geof:sfIntersects(?geom1, ?geom2)

intersects.PNG

WITHIN

Boolean

Returns TRUE if geom1 is completely inside geom2

Implemented

geof:sfWithin(?geom1, ?geom2)

within.PNG

CONTAINS

Boolean

Returns TRUE if and only if no points of geom2 lie in the exterior of geom1, and at least one point of the interior of geom2 lies in the interior of geom1.

Implemented

geof:sfContains(?geom1, ?geom2)

contains.PNG

OVERLAPS

Boolean

Returns TRUE if the Geometries share space, are of the same dimension, but are not completely contained by each other.

Implemented

geof:sfOverlaps(?geom1, ?geom2)

overlaps.PNG

TOUCHES

Boolean

Returns TRUE if the geometries have at least one point in common, but their interiors do not intersect.

Implemented

geof:sfTouches(?geom1, ?geom2)

touches.PNG

EQUALS

Boolean

Returns TRUE if the given geometries represent the same geometry

Implemented

geof:sfEquals(?geom1, ?geom2)

equals.PNG

DISJOINT

Boolean

Returns TRUE if the Geometries do not "spatially intersect" - if they do not share any space together.

Implemented

geof:sfDisjoint(?geom1, ?geom2)

disjoint.PNG

CROSSES

Boolean

Returns TRUE if the supplied geometries have some, but not all, interior points in common.

Implemented

geof:sfCrosses(?geom1, ?geom2)

crosses.PNG

NON TOPOLOGICAL FUNCTIONS

INTERSECTION

Geometry

Returns a geometry that represents the shared portion of geom1 and geom2.

Implemented

geof:intersection(?geom1, ?geom2)

intersection.PNG

CONVEXHULL

Geometry

The convex hull of a geometry represents the minimum convex geometry that encloses all geometries within the set.

Implemented

geof:convexHull(?geom1)

convexhull.PNG

BUFFER

Geometry

This function returns a geometric object that represents all Points whose distance from geom1 is less than or equal to the radius measured in units.

Implemented

geof:buffer(?geom1, radius, units:anyUnit)

buffer.PNG

DISTANCE

Geometry

Returns the shortest distance in units between any two Points in the two geometric objects.

Implemented

geof:distance(?geom1, ?geom2,units:anyUnit)

distance.PNG

BOUNDARY

Geometry

This function returns the closure of the boundary of geom1.

Implemented

geof:boundary(?geom1)

boundary.PNG

DIFFERENCE

Geometry

This function returns a geometric object that represents all Points in the set difference of geom1 with geom2.

Implemented

geof:difference (geom1, geom2)

difference.PNG

ENVELOPE

Geometry

This function returns the minimum bounding box of geom1

Implemented

geof:envelope (geom1)

envelope.PNG

RELATE

Boolean

Returns true if the spatial relationship between geom1 and geom2 corresponds to one with acceptable values for the specified pattern-matrix. Otherwise, this function returns false. Pattern-matrix represents a DE-9IM intersection pattern consisting of T (true) and F (false) values.

Implemented

geof:relate(geom1, geom2, pattern-matrix)

SYM DIFFERENCE

Geometry

This function returns a geometric object that represents all Points in the set symmetric difference of geom1 with geom2.

Implemented

geof:symDifference(geom1, geom2)

UNION

Geometry

This function returns a geometric object that represents all Points in the union of geom1 with geom2.

Implemented

geof:union(geom1, geom2)

union.PNG

getSRID

INT

Returns the spatial reference system URI for geom

Implemented

geof:getSRID (geom)

EH FUNCTIONS

EQUALS

Boolean

Returns TRUE if the given geometries represent the same geometry

Implemented

geof:ehEquals(geom1, geom2)

equals.PNG

DISJOINT

Boolean

Returns TRUE if the Geometries do not "spatially intersect" - if they do not share any space together.

Implemented

geof:ehDisjoint(geom1, geom2)

disjoint.PNG

MEET

Boolean

Returns TRUE if the geometries have at least one point in common, but their interiors do not intersect.

Implemented

´┐╝geof:ehMeet(geom1, geom2)

ehmeet.PNG

OVERLAP

Boolean

Returns TRUE if the Geometries share space, are of the same dimension, but are not completely contained by each other.

Implemented

geof:ehOverlap(geom1, geom2)

ehoverlap.PNG

COVERS

Boolean

Exists if the subject spatialObject spatially covers the object spatialObject. DE-9IM: T*TFT*FF*.

Implemented

geof:ehCovers(geom1, geom2)

ehcovers.PNG

COVERED BY

Boolean

Exists if the subject spatialObject is spatially covered by the object spatialObject. DE-9IM: TFF*TFT**.

Implemented

geof:ehCoveredBy(geom1, geom2)

ehcoveredby.PNG

INSIDE

Boolean

Exists if the subject spatialObject is spatially inside the object spatialObject. DE-9IM: TFF*FFT**.

Implemented

geof:ehInside(geom1, geom2)

ehinside.PNG

CONTAINS

Boolean

Exists if the subject spatialObject spatially contains the object spatialObject. DE-9IM: T*TFF*FF*.

Implemented

geof:ehContains(geom1, geom2)

ehcontains.PNG

RCC FUNCTIONS

EQUALS

Boolean

Returns TRUE if the given geometries represent the same geometry

Implemented

geof:rcc8eq(geom1, geom2)

rcc8eq.png

DISCONNECTED

Boolean

Returns TRUE if the Geometries do not "spatially intersect" - if they do not share any space together.

Implemented

geof:rcc8dc(geom1, geom2)

rcc8dc.png

EXTERNALLY CONNECTED

Boolean

Returns TRUE if the geometries have at least one point in common, but their interiors do not intersect.

Implemented

geof:rcc8ec(geom1, geom2)

rcc8ec.png

PARTIALLY OVERLAPPING

Boolean

Returns TRUE if the Geometries share space, are of the same dimension, but are not completely contained by each other.

Implemented

geof:rcc8po(geom1, geom2)

rcc8po.png

TANGENTIAL PROPER PART

Boolean

Returns true if geom1 is within geom2 and their borders touches in almost one point

Implemented

geof:rcc8tpp(geom1, geom2)

rcc8tpp.png

TANGENTIAL PROPER PART INVERSE

Boolean

Returns true if geom1 contains geom2 and their borders touches in almost one point

Implemented

geof:rcc8tppi(geom1, geom2)

rcc8tppi.png

NON- TANGENTIAL PROPER PART

Boolean

Returns true if geom 1 is within geom 2 and their borders doesn't touches in almost one point

Implemented

geof:rcc8ntpp(geom1, geom2)

rcc8ntpp.png

NON- TANGENTIAL PROPER PART INVERSE

Boolean

Returns true if geom1 contains geom2 and their borders doesn't touch in any point

Implemented

geof:rcc8ntppi(geom1, geom2)

rcc8ntppi.png

GSoC/2015/MARMOTTA-584 (last edited 2015-08-24 08:36:38 by SergioFernandez)