# Oracle Spatial and Graph

Oracle Spatial and Graph, formerly Oracle Spatial, is a free option component of the Oracle Database. The spatial features in Oracle Spatial and Graph aid users in managing geographic and location-data in a native type within an Oracle database, potentially supporting a wide range of applications — from automated mapping, facilities management, and geographic information systems (AM/FM/GIS), to wireless location services and location-enabled e-business. The graph features in Oracle Spatial and Graph include Oracle Network Data Model (NDM) graphs used in traditional network applications in major transportation, telcos, utilities and energy organizations and RDF semantic graphs used in social networks and social interactions and in linking disparate data sets to address requirements from the research, health sciences, finance, media and intelligence communities.

## Components

The geospatial feature of Oracle Spatial and Graph provides a SQL schema and functions that facilitate the storage, retrieval, update, and query of collections of spatial features in an Oracle database. (The spatial component of a spatial feature consists of the geometric representation of its shape in some coordinate space — referred to as its "geometry".)

### Geospatial data features

The Oracle Spatial geospatial data features consist of:
* a schema - MDSYS (as in "multi-dimensional system") - that prescribes the storage, syntax, and semantics of supported geometric data types
* a spatial indexing system
* operators, functions, and procedures for performing area-of-interest queries, spatial join queries, and other spatial analysis operations
* functions and procedures for utility and tuning operations
* vector performance acceleration for substantially faster querying and more efficient use of CPU, memory, and partitioning
* support for parametric curves (NURBS) for mathematically precise representation of free-form curves that can be reproduced exactly for 2D and 3D data
* a topology data model for working with data about nodes, edges, and faces in a topology
* a GeoRaster feature to store, index, query, analyze, and deliver GeoRaster data (raster image and gridded data and its associated metadata) with virtual mosaics, raster-algebra operations, image processing, Java API, and GDAL-Based ETL Wizard
* 3-dimensional data-types and operators including Triangulated Irregular Networks (TINs), Point Clouds and LiDAR data sets with Spatial R-tree indexing, SQL operators and analysis functions, and metadata for visualization
* geocoding that converts location and address data into formal geographic coordinates from point addresses and address ranges, and supports reverse geocoding
* a routing engine that creates fastest or shortest routes with driving distances, times, directions and turn-specific geometries based on commercial and publicly available street network data, and restrictions and conditions for advanced routing, such as truck-specific routing
* Open Geospatial Consortium-compliant Web Services for geocoding, routing, mapping, business-directory, catalog, and geospatial feature transactions
* Spatial Visualization components to render data on maps.

### Network Data Model

The Network Data Model feature is a property graph model used to model and analyze physical and logical networks used in industries such as transportation, logistics, and utilities. Its features include:
* Persistent management of the network connectivity in the database
* A data model for representing capabilities or objects (modeled as nodes and links) in a network with a PL/SQL API for managing network data.
* User-determined link and node properties, such as costs and restrictions, including temporal properties.
* Association of real world objects with network elements to simplify application development and maintenance.
* A Java API for in-memory network path analytics, including shortest path, nearest neighbors, within cost, and reachability, with partitioned loading of large networks into memory.

### RDF semantic

The RDF Semantic Graph feature supports the World Wide Web Consortium (W3C) RDF standards. It provides RDF data management, querying and inferencing that are commonly used in a variety of applications ranging from semantic data integration to social network analysis and linked open data applications. Its features include:
* An RDF triple store and ontology management with automatic partitioning and data compression.
* Proven scalability to over 54 billion triples (LUBM 200K benchmark) with scalability to the 8 petabyte limit of Oracle Database.
* High performance bulk loading with Oracle Database parallel and direct path loading and loading through Jena.
* SPARQL and SQL parallel querying and updating of RDF graphs with SPARQL 1.1, SPARQL endpoint web services, SPARQL/Update, Java APIs with open source Apache Jena & Sesame, SQL queries with embedded SPARQL graph patterns, SQL insert/update.
* Ontology-assisted querying of table data using SQL operators to expand SQL relational queries with related terms for more comprehensive results.
* Native inferencing with parallel, incremental and secure operation for scalable reasoning with RDFS, Web Ontology Language (OWL 2 RL/EL), Simple Knowledge Organization System (SKOS), user-defined rules, user-defined inference extensions, and an extensibility framework to plug-in special purpose reasoners, such as PelletDB, TrOWL.
* GeoSPARQL support for storing / querying spatial data in RDF per Open GeoSpatial Consortium (OGC) specification.
* RDF views on relational data to apply semantic analysis with support for automatic (Direct Mapping) and custom (W3C R2RML language) mapping of relational data to RDF triples.
* Triple-level security that meets the most stringent security requirements with Oracle Label Security.
* Integration with open source Apache Jena and Sesame application development environments.
* Integration with XML-based tools, such as Oracle Business Intelligence Enterprise Edition (OBIEE) for reporting and dashboards.
* Integration with Network Data Model graph analytics for shortest path, nearest neighbors, within cost, and reachability.
* Integration with Oracle Advanced Analytics features: Oracle Data Mining for exploiting predictive analytics and pattern discovery and Oracle R Enterprise for statistical computing and charting visualization of graph data.
* Semantic indexing for text mining and entity analytics integrated with popular natural language processors.
* Integration with leading commercial and open source tools for querying, visualization, and ontology management.

## Availability

Oracle Spatial and Graph is an option for Oracle Enterprise Edition, and must be licensed separately. Free since December 5, 2019. It is also included in Oracle Database Cloud Service (High Performance Edition and Extreme Performance Edition). It is not included in Oracle Standard Edition or Oracle Standard Edition One. However, the latter two editions allow the use of a subset of spatial features (called Oracle Locator) at no extra cost. An appendix of the Oracle Spatial and Graph Developer's Guide specifies the functions allowed in Locator.

## History

The Oracle RDBMS first incorporated spatial-data capability with a modification to Oracle 4 made by scientists working with the Canadian Hydrographic Service (CHS). A joint development team of CHS and Oracle personnel subsequently redesigned the Oracle kernel, resulting in the "Spatial Data Option" or "SDO" for Oracle 7. (The SDO_ prefix continues in use within Oracle Spatial implementations.) The spatial indexing system for SDO involved an adaptation of Riemannian hypercube data-structures, invoking a helical spiral through 3-dimensional space, which allows n-size of features. This also permitted a highly efficient compression of the resulting data, suitable for the petabyte-size data repositories that CHS and other major corporate users required, and also improving search and retrieval times. The "helical hyperspatial code", or HHCode, as developed by CHS and implemented by Oracle Spatial, comprises a form of space-filling curve.
With Oracle 8, Oracle Corporation marketing dubbed the spatial extension simply "Oracle Spatial". The primary spatial indexing system no longer uses the HHCode, but a standard r-tree index.
Since July, 2012, the option has been named Oracle Spatial and Graph to highlight the graph database capabilities in the product - Network Data Model graph introduced with Oracle Database 10g Release 1 and RDF Semantic Graph introduced with Oracle Database 10g Release 2.