MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/md/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/md/admin/sdoneth.sql

Rem Copyright (c) 2002, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      sdoneth.sql - Network Manager Public PL/SQL Package
Rem
Rem    DESCRIPTION
Rem      <short description of component this file declares/defines>
Rem
Rem    NOTES
Rem      <other useful comments, qualifications, etc.>
Rem
Rem    BEGIN SQL_FILE_METADATA 
Rem    SQL_SOURCE_FILE: sdo/admin/sdoneth.sql 
Rem    SQL_SHIPPED_FILE: md/admin/sdoneth.sql 
Rem    SQL_PHASE: SDONETH
Rem    SQL_STARTUP_MODE: NORMAL 
Rem    SQL_IGNORABLE_ERRORS: NONE 
Rem    SQL_CALLING_FILE: sdo/admin/catmdsdop3.sql 
Rem    END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    rjanders    10/08/17 - Add MDSYS to spatial type
Rem    jcwang      09/09/15 - add SQL file metadata
Rem    rjanders    01/02/15 - long identifier project phase 1
Rem    rjanders    09/16/13 - OCCS: Remove hardtabs
Rem    rjanders    03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem                           initialization
Rem    hgong       05/31/12 - add network buffer functions
Rem    jcwang      02/16/12 - add is_geodetic network
Rem    hgong       12/06/11 - add hierarchical network relations
Rem    hgong       11/22/11 - bug 13406836
Rem    begeorge    11/07/11 - assign default value to partition size tolerance
Rem    hgong       09/22/11 - remove feature_type column from feature table
Rem    begeorge    08/22/11 - add partition size tolerance as a parameter in powerlaw partitioning
Rem    rjanders    02/24/11 - Make sdo_geometry functions deterministic
Rem    hgong       10/14/10 - add xml request api
Rem    jcwang      06/09/10 - add get_pt_geom_ord
Rem    hgong       06/04/10 - add get_logging_level
Rem    hgong       04/09/10 - add feature modeling
Rem    jcwang      01/07/10 - bug-8641669
Rem    hgong       06/23/09 - add comments
Rem    begeorge    05/14/09 - add logical partitioniing for power law networks
Rem    begeorge    02/02/09 - add logical partition
Rem    hgong       12/10/08 - add assigned_partition_id for
Rem                           SDO_NET_UPD_HIST_NTBL
Rem    ningan      11/11/08 - replace history_nt with SDO_NET_UPD_HIST_NTBL
Rem    ningan      08/22/08 - add update_consistency
Rem    ningan      08/06/08 - make db_sync_clear public
Rem    ningan      07/24/08 - add validate_consistency
Rem    ningan      07/23/08 - change enable_db_sync to db_sync_enable &
Rem                           disable_db_sync to db_sync_disable
Rem    ningan      05/09/08 - bug-6504883
Rem    hgong       02/27/08 - add generate_node_levels
Rem    jcwang      02/20/08 - add get_percentage, get_pt, get_geometry
Rem    jcwang      11/12/07 - validate partition information
Rem    jcwang      09/11/07 - add (de)register java_object
Rem    hgong       09/05/07 - add delta update option for
Rem                           generate_partition_blobs
Rem    ningan      08/05/07 - add enable_db_sync & disable_db_sync
Rem    jcwang      05/16/07 - make data check optional in validate_network
Rem    hgong       03/12/07 - add load_config
Rem    hgong       02/27/07 - add commit option for partition BLOB generation
Rem    hgong       01/31/07 - remove validate_partition_blob_schema
Rem    hgong       01/19/07 - mark undocumentedsubprograms deprecated
Rem    hgong       01/09/07 - add register_constraint and deregister_constraint
Rem    hgong       12/12/06 - change include_user_data flag to boolean
Rem    jcwang      12/01/06 - add get_partition_size
Rem    hgong       11/02/06 - add level to partition blob and component table
Rem    jcwang      10/27/06 - partition with link_level
Rem    hgong       10/24/06 - add include_user_data flag in
Rem                           generate_partition_blobs
Rem    hgong       09/28/06 - add generate_partition_blobs
Rem    hgong       09/14/06 - add validate_partition_blob_schema
Rem    hgong       09/12/06 - add get_partition_blob_table_name
Rem    jcwang      08/30/06 - add partition
Rem    ningan      06/07/06 - add create_partition_blob_table interface
Rem    ningan      04/18/06 - add compute_path_geometry
Rem    jcwang      02/14/06 - add subpath network schema 
Rem    jcwang      11/14/05 - add user_data_metadata validation 
Rem    jcwang      09/08/05 - pragma fix 
Rem    bgouslin    05/10/05 - Remove backtick line 
Rem    jcwang      05/04/05 - fix storage default value 
Rem    jcwang      04/28/05 - add storage parameters to create_xxx_network 
Rem    jcwang      02/21/05 - sql injection bugs 
Rem    jcwang      02/03/05 - bug 4148526 
Rem    ningan      10/26/04 - change the signature of create_topo_network(created on 10/11/04)
Rem    jcwang      10/22/04 - add link_partition_column
Rem    jcwang      10/19/04 - add bidirected column for directed networks in 
Rem                           link table 
Rem    jcwang      10/14/04 - add get_topology 
Rem    ningan      10/11/04 - add create_topo_network(..) that builds a network from existing topology
Rem    jcwang      10/06/04 - add topo_geom_column 
Rem    jcwang      07/12/04 - add bidirected column in create_link_table 
Rem    jcwang      05/18/04 - add nodePartitionColumn 
Rem    jcwang      04/09/04 - add is_simple, is_complex for simple or complex networks 
Rem    jcwang      10/23/03 - add spatial/logical network conversion 
Rem    jcwang      10/15/03 - remove WNPS,RNPS for delete_xxx 
Rem    jcwang      10/07/03 - add addPath 
Rem    jcwang      08/29/03 - add get_network_id and get_network_name 
Rem    jcwang      04/16/03 - add referential checking
Rem    jcwang      04/02/03 - modify ref_constraint proc names
Rem    jcwang      03/26/03 - add referencial constraints to network
Rem    jcwang      03/17/03 - change path table, and add path functions
Rem    jcwang      03/07/03 - add create_path_table for searchable paths
Rem    jcwang      03/03/03 - add get_node_hierarchy_level
Rem    jcwang      02/26/03 - move delete_node(link)_trigger
Rem    jcwang      02/21/03 - change to hierarchy_levels
Rem    jcwang      02/17/03 - add sdo_topo_geometry column in node/link table
Rem    jcwang      02/03/03 - Add Delete Trigger
Rem    jcwang      01/24/03 - formatting
Rem    jcwang      01/17/03 - add copy_network
Rem    jcwang      01/10/03 - add partition information
Rem    jcwang      12/04/02 - add get_child_nodes(), get_child_links()
Rem    jcwang      11/20/02 - network test
Rem    jcwang      10/25/02 - Add Network Hierarchical Structure
Rem    jcwang      10/16/02 - Add LRS Geometry Option, Hierarchy, and Path table
Rem    jcwang      10/03/02 - create network from geometry layer
Rem    jcwang      09/30/02 - jcwang_network_admin
Rem    jcwang      09/19/02 - Created
Rem

Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@@?/rdbms/admin/sqlsessstart.sql
Rem ********************************************************************

CREATE OR REPLACE PACKAGE MDSYS.sdo_net AUTHID current_user AS

  ---------------------------
  --CONSTANTS
  ---------------------------
  --Logging levels
  --The finer the logging level, the higher the number
  LOGGING_LEVEL_FATAL     CONSTANT INTEGER := 1;
  LOGGING_LEVEL_ERROR     CONSTANT INTEGER := 2;
  LOGGING_LEVEL_WARN      CONSTANT INTEGER := 3;
  LOGGING_LEVEL_INFO      CONSTANT INTEGER := 4;
  LOGGING_LEVEL_DEBUG     CONSTANT INTEGER := 5;
  LOGGING_LEVEL_FINEST    CONSTANT INTEGER := 6;

  --Fearture Types
  FEAT_TYPE_PON           CONSTANT INTEGER := 1;  --SINGLE POINT ON NODE
  FEAT_TYPE_POL           CONSTANT INTEGER := 2;  --SINGLE POINT ON LINK
  FEAT_TYPE_POINT         CONSTANT INTEGER := 3;  --SINGLE POINT
  FEAT_TYPE_LINE          CONSTANT INTEGER := 4;  --SINGLE LINE
  FEAT_TYPE_MPON          CONSTANT INTEGER := 5;  --MULTI POINT ON NODE
  FEAT_TYPE_MPOL          CONSTANT INTEGER := 6;  --MULTI POINT ON LINK
  FEAT_TYPE_MPOINT        CONSTANT INTEGER := 7;  --MULTI POINT
  FEAT_TYPE_MLINE         CONSTANT INTEGER := 8;  --MULTI LINE
  FEAT_TYPE_COLL          CONSTANT INTEGER := 9;  --COLLECTION

  --Fearture Element Types
  FEAT_ELEM_TYPE_PON      CONSTANT INTEGER := 1;  --POINT ON NODE
  FEAT_ELEM_TYPE_POL      CONSTANT INTEGER := 2;  --POINT ON LINK
  FEAT_ELEM_TYPE_LINE     CONSTANT INTEGER := 3;  --LINE

  --Net Element Types
  NET_ELEM_TYPE_NODE      CONSTANT INTEGER := 1;  --NODE
  NET_ELEM_TYPE_LINK      CONSTANT INTEGER := 2;  --LINK
 
  ---------------------------
  --TYPES
  ---------------------------
  type ref_cursor is ref cursor;

  ---------------------------
  --SUBPROGRAMS
  ---------------------------
  -- check if the network exists in the network metadata
  FUNCTION network_exists(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(network_exists,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return the network ID from network name
  FUNCTION get_network_id(network IN VARCHAR2)
    RETURN NUMBER;
  --PRAGMA RESTRICT_REFERENCES(get_network_id,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return  network name from network ID
  FUNCTION get_network_name(network_id IN NUMBER)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_network_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return  network name from network ID
  FUNCTION get_network_name(network_id IN NUMBER, owner OUT VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_network_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return  network owner from network ID
  FUNCTION get_network_owner(network_id IN NUMBER)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_network_owner,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return the type of network
  FUNCTION get_network_type(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_network_type,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return the type of network
  FUNCTION get_network_category(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_network_category,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return the type of geometry
  FUNCTION get_geometry_type(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_geometry_type,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return no of hierarchy levels
  FUNCTION get_no_of_hierarchy_levels(network IN VARCHAR2)
    RETURN NUMBER;
  PRAGMA RESTRICT_REFERENCES(get_no_of_hierarchy_levels,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: query partition table instead      --
  -----------------------------------------------------
  -- return no of partition
  FUNCTION get_no_of_partitions(network IN VARCHAR2, 
                                link_level IN NUMBER DEFAULT 1)
    RETURN NUMBER;

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return geometry table(LRS) name of network
  FUNCTION get_lrs_table_name(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_lrs_table_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return LRS geom column of network
  FUNCTION get_lrs_geom_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_lrs_geom_column,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return node table name of network
  FUNCTION get_node_table_name(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_node_table_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return node geom column of network
  FUNCTION get_node_geom_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_node_geom_column,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return node cost column of network
  FUNCTION get_node_cost_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_node_cost_column,WNDS,WNPS,RNPS);

  ----------------------------------------------------------------------
  -- @deprecated: node partition column is no longer used since 11gR1.--
  ----------------------------------------------------------------------
  -- return node partition column of network
  FUNCTION get_node_partition_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  --PRAGMA RESTRICT_REFERENCES(get_node_partition_column,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return link table name of network
  FUNCTION get_link_table_name(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_link_table_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return link geom column of network
  FUNCTION get_link_geom_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_link_geom_column,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return link direction of network
  FUNCTION get_link_direction(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_link_direction,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: link partition column is not used. --
  -----------------------------------------------------
  -- return link partition column of network
  FUNCTION get_link_partition_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  --PRAGMA RESTRICT_REFERENCES(get_link_partition_column,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return link cost column of network
  FUNCTION get_link_cost_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_link_cost_column,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return path table name of network
  FUNCTION get_path_table_name(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_path_table_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return path geom column name of network
  FUNCTION get_path_geom_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_path_geom_column,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return path-link table name of network
  FUNCTION get_path_link_table_name(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_path_link_table_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return subpath table name of network
  FUNCTION get_subpath_table_name(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_subpath_table_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return subpath geom column name of network
  FUNCTION get_subpath_geom_column(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_subpath_geom_column,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return partition table name of network
  FUNCTION get_partition_table_name(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_partition_table_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return partition blob table name of network
  FUNCTION get_partition_blob_table_name(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_partition_blob_table_name,WNDS,WNPS,RNPS);

  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return if there is any user defined data in the metadata 
  FUNCTION get_user_defined_data(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_user_defined_data,WNDS,WNPS,RNPS);

  
  -- return no of nodes of the network
  FUNCTION get_no_of_nodes(network IN VARCHAR2)
    RETURN NUMBER;

  -- return no of nodes of the network of specified hierarchy_level
  FUNCTION get_no_of_nodes(network IN VARCHAR2, hierarchy_level IN NUMBER)
    RETURN NUMBER;

  -- return no of links of the network
  FUNCTION get_no_of_links(network IN VARCHAR2)
    RETURN NUMBER;
--  PRAGMA RESTRICT_REFERENCES(get_no_of_links,WNDS,WNPS,RNPS);

  -- return no of links of the network of specified hierarchy_level
  FUNCTION get_no_of_links(network IN VARCHAR2, hierarchy_level IN NUMBER)
    RETURN NUMBER;

  -- return no of links of the given path 
  FUNCTION get_no_of_links_in_path(network IN VARCHAR2, path_id IN NUMBER)
    RETURN NUMBER;

  -- return no of nodes of the given path 
  FUNCTION get_no_of_nodes_in_path(network IN VARCHAR2, path_id IN NUMBER)
    RETURN NUMBER;

  -- return the in-link ids of a node
  FUNCTION get_in_links(network IN VARCHAR2, node_id in number)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC ;

  -- return the out-link ids of a node
  FUNCTION get_out_links(network IN VARCHAR2, node_id in number)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC;


  -- return the in-degree of a node
  FUNCTION get_node_in_degree(network IN VARCHAR2, node_id in number)
    RETURN NUMBER;

  -- return the out-degree of a node
  FUNCTION get_node_out_degree(network IN VARCHAR2, node_id in number)
    RETURN NUMBER;
--  PRAGMA RESTRICT_REFERENCES(get_node_out_degree,WNDS,WNPS,RNPS);

  -- return the degree of a node(in_degree+out_degree)
  FUNCTION get_node_degree(network IN VARCHAR2, node_id in number)
    RETURN NUMBER;


  -- return the child nodes of a given node
  FUNCTION get_child_nodes(network IN VARCHAR2, node_id in number)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC;

  -- return the child links of a given link
  FUNCTION get_child_links(network IN VARCHAR2, link_id in number)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC;

  -----------------
  -- @deprecated --
  -----------------
  -- return the path links of a given path
  FUNCTION get_links_in_path(network IN VARCHAR2, path_id in number)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC;

  -- return the path nodes of a given path
  FUNCTION get_nodes_in_path(network IN VARCHAR2, path_id in number)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC;


  --
  -- create xxx_network assumes the following naming convention
  -- table name length limitation: 32 char.
  -- network name length limitation : 24 char
  -- 

  -- default table/columns names:
  -- node table                 : <network>_node$
  -- link table                 : <network>_link$
  -- path table                 : <network>_path$
  -- path link  table           : <network>_plink$ (path_id, link_id)
  -- node geom. column          : geometry
  -- node lrs geom column       : geom_id and measure
  -- node topo geom column      : topo_geometry
  -- link geom. column          : geometry
  -- link lrs geom column       : geom_id, start_measure, and end_measure
  -- link topo geom column      : topo_geometry
  -- path geom. column          : geometry
  -- node cost  column          : cost
  -- link cost  column          : cost
  -- path cost  column          : cost
  -- subpath table name         : <network>_spath$
  -- subpath geom. column       : geometry 
  -- storage parameters         : for create table statement



  -- create a logical network 
  PROCEDURE create_logical_network(network                      IN VARCHAR2,
                                   no_of_hierarchy_levels       IN NUMBER,
                                   is_directed                  IN BOOLEAN, 
                                   node_table_name              IN VARCHAR2,
                                   node_cost_column             IN VARCHAR2,
                                   link_table_name              IN VARCHAR2,
                                   link_cost_column             IN VARCHAR2,
                                   path_table_name              IN VARCHAR2,
                                   path_link_table_name         IN VARCHAR2,
                                   subpath_table_name           IN VARCHAR2,
                                   is_complex                   IN BOOLEAN DEFAULT FALSE,
                                   storage_parameters           IN VARCHAR2 DEFAULT '');

  -- create a logical network 
  PROCEDURE create_logical_network(network                      IN VARCHAR2,
                                   no_of_hierarchy_levels       IN NUMBER,
                                   is_directed                  IN BOOLEAN, 
                                   node_table_name              IN VARCHAR2,
                                   node_cost_column             IN VARCHAR2,
                                   link_table_name              IN VARCHAR2,
                                   link_cost_column             IN VARCHAR2,
                                   path_table_name              IN VARCHAR2,
                                   path_link_table_name         IN VARCHAR2,
                                   is_complex                   IN BOOLEAN DEFAULT FALSE,
                                   storage_parameters           IN VARCHAR2 DEFAULT '');

  -- create a logical network (simplified version)       
  PROCEDURE create_logical_network(network                      IN VARCHAR2,
                                   no_of_hierarchy_levels       IN NUMBER,
                                   is_directed                  IN BOOLEAN,
                                   node_with_cost               IN BOOLEAN DEFAULT FALSE,
                                   is_complex                   IN BOOLEAN DEFAULT FALSE,
                                   storage_parameters           IN VARCHAR2 DEFAULT ''); 



  -- create a spatial (SDO_GEOMETRY) network 
  PROCEDURE create_sdo_network(network                  IN VARCHAR2,
                               no_of_hierarchy_levels   IN NUMBER,
                               is_directed              IN BOOLEAN,
                               node_table_name          IN VARCHAR2,
                               node_geom_column         IN VARCHAR2,
                               node_cost_column         IN VARCHAR2,
                               link_table_name          IN VARCHAR2,
                               link_geom_column         IN VARCHAR2,
                               link_cost_column         IN VARCHAR2,
                               path_table_name          IN VARCHAR2,
                               path_geom_column         IN VARCHAR2,
                               path_link_table_name     IN VARCHAR2,
                               subpath_table_name       IN VARCHAR2,    
                               subpath_geom_column      IN VARCHAR2,
                               is_complex               IN BOOLEAN DEFAULT FALSE,
                               storage_parameters       IN VARCHAR2 DEFAULT '');

  -- create a spatial (SDO_GEOMETRY) network 
  PROCEDURE create_sdo_network(network                  IN VARCHAR2,
                               no_of_hierarchy_levels   IN NUMBER,
                               is_directed              IN BOOLEAN,
                               node_table_name          IN VARCHAR2,
                               node_geom_column         IN VARCHAR2,
                               node_cost_column         IN VARCHAR2,
                               link_table_name          IN VARCHAR2,
                               link_geom_column         IN VARCHAR2,
                               link_cost_column         IN VARCHAR2,
                               path_table_name          IN VARCHAR2,
                               path_geom_column         IN VARCHAR2,
                               path_link_table_name     IN VARCHAR2,
                               is_complex               IN BOOLEAN DEFAULT FALSE,
                               storage_parameters       IN VARCHAR2 DEFAULT '');



  -- create a spatial (SDO_GEOMETRY) network 
  PROCEDURE create_sdo_network(network IN VARCHAR2,
                               no_of_hierarchy_levels   IN NUMBER,
                               is_directed              IN BOOLEAN,
                               node_with_cost           IN BOOLEAN DEFAULT FALSE,
                               is_complex               IN BOOLEAN DEFAULT FALSE,
                               storage_parameters       IN VARCHAR2 DEFAULT '');


  -- create a spatial (LRS_GEOMETRY) network 
  PROCEDURE create_lrs_network(network                  IN VARCHAR2,
                               no_of_hierarchy_levels   IN NUMBER,
                               is_directed              IN BOOLEAN,
                               node_table_name          IN VARCHAR2,
                               node_cost_column         IN VARCHAR2,
                               link_table_name          IN VARCHAR2,
                               link_cost_column         IN VARCHAR2,
                               lrs_table_name           IN VARCHAR2,
                               lrs_geom_column          IN VARCHAR2,    
                               path_table_name          IN VARCHAR2,
                               path_geom_column         IN VARCHAR2,
                               path_link_table_name     IN VARCHAR2,
                               subpath_table_name       IN VARCHAR2,    
                               subpath_geom_column      IN VARCHAR2,
                               is_complex               IN BOOLEAN DEFAULT FALSE,
                               storage_parameters       IN VARCHAR2 DEFAULT '');
  -- create a spatial (LRS_GEOMETRY) network 
  PROCEDURE create_lrs_network(network                  IN VARCHAR2,
                               no_of_hierarchy_levels   IN NUMBER,
                               is_directed              IN BOOLEAN,
                               node_table_name          IN VARCHAR2,
                               node_cost_column         IN VARCHAR2,
                               link_table_name          IN VARCHAR2,
                               link_cost_column         IN VARCHAR2,
                               lrs_table_name           IN VARCHAR2,
                               lrs_geom_column          IN VARCHAR2,    
                               path_table_name          IN VARCHAR2,
                               path_geom_column         IN VARCHAR2,
                               path_link_table_name     IN VARCHAR2,
                               is_complex               IN BOOLEAN DEFAULT FALSE,
                               storage_parameters       IN VARCHAR2 DEFAULT '');


  -- create a spatial (LRS_GEOMETRY) network 
  PROCEDURE create_lrs_network(network                  IN VARCHAR2,
                               lrs_table_name           IN VARCHAR2,
                               lrs_geom_column          IN VARCHAR2,
                               no_of_hierarchy_levels   IN NUMBER,
                               is_directed              IN BOOLEAN,
                               node_with_cost           IN BOOLEAN DEFAULT FALSE,
                               is_complex               IN BOOLEAN DEFAULT FALSE,
                               storage_parameters       IN VARCHAR2 DEFAULT '');



  PROCEDURE create_topo_network(network IN VARCHAR2,
                                no_of_hierarchy_levels IN NUMBER,
                                is_directed             IN BOOLEAN,
                                node_table_name         IN VARCHAR2,
                                node_geom_column        IN VARCHAR2,    
                                node_cost_column        IN VARCHAR2,
                                link_table_name         IN VARCHAR2,
                                link_geom_column        IN VARCHAR2,    
                                link_cost_column        IN VARCHAR2,
                                path_table_name         IN VARCHAR2,
                                path_geom_column        IN VARCHAR2,
                                path_link_table_name    IN VARCHAR2,
                                subpath_table_name      IN VARCHAR2,
                                subpath_geom_column     IN VARCHAR2,
                                is_complex              IN BOOLEAN DEFAULT FALSE,
                                storage_parameters      IN VARCHAR2 DEFAULT '');

  -- create a spatial (TOPO_GEOMETRY) network 
  PROCEDURE create_topo_network(network IN VARCHAR2,
                                no_of_hierarchy_levels IN NUMBER,
                                is_directed             IN BOOLEAN,
                                node_table_name         IN VARCHAR2,
                                node_geom_column        IN VARCHAR2,    
                                node_cost_column        IN VARCHAR2,
                                link_table_name         IN VARCHAR2,
                                link_geom_column        IN VARCHAR2,    
                                link_cost_column        IN VARCHAR2,
                                path_table_name         IN VARCHAR2,
                                path_geom_column        IN VARCHAR2,
                                path_link_table_name    IN VARCHAR2,
                                is_complex              IN BOOLEAN DEFAULT FALSE,
                                storage_parameters      IN VARCHAR2 DEFAULT '');


  -- create a spatial (TOPO_GEOMETRY) network 
  PROCEDURE create_topo_network(network IN VARCHAR2,
                                no_of_hierarchy_levels  IN NUMBER,
                                is_directed             IN BOOLEAN,
                                node_table_name         IN VARCHAR2,
                                node_cost_column        IN VARCHAR2,
                                link_table_name         IN VARCHAR2,
                                link_cost_column        IN VARCHAR2,
                                path_table_name         IN VARCHAR2,
                                path_geom_column        IN VARCHAR2,
                                path_link_table_name    IN VARCHAR2,
                                is_complex              IN BOOLEAN DEFAULT FALSE,
                                storage_parameters      IN VARCHAR2 DEFAULT '');



  -- create a spatial (TOPO_GEOMETRY) network 
  PROCEDURE create_topo_network(network                 IN VARCHAR2,
                                no_of_hierarchy_levels  IN NUMBER,
                                is_directed             IN BOOLEAN,
                                node_with_cost          IN BOOLEAN DEFAULT FALSE,
                                is_complex              IN BOOLEAN DEFAULT FALSE,
                                storage_parameters      IN VARCHAR2 DEFAULT '');



  -- create a spatial (TOPO_GEOMETRY) network from existing topology data
  -- The nodes and links in the resultant network have one-to-one mapping
  -- to the nodes and edges in the given topology
  PROCEDURE create_topo_network(network                  in varchar2, 
                                no_of_hierarchy_levels   in number,
                                is_directed              in boolean,
                                node_with_cost           in boolean,
                                is_complex               in boolean,           
                                topology                 in varchar2,
                                storage_parameters       in varchar2 ); 

  -----------------
  -- @deprecated --
  -----------------
  PROCEDURE create_network(network                      IN VARCHAR2,
                           geom_type                    IN VARCHAR2,
                           no_of_hierarchy_levels       IN NUMBER,
                           is_directed                  IN BOOLEAN,
                           node_table_name              IN VARCHAR2,
                           node_geom_column             IN VARCHAR2,
                           node_cost_column             IN VARCHAR2,
                           link_table_name              IN VARCHAR2,
                           link_geom_column             IN VARCHAR2,
                           link_cost_column             IN VARCHAR2,
                           lrs_table_name               IN VARCHAR2,
                           lrs_geom_column              IN VARCHAR2,
                           path_table_name              IN VARCHAR2,
                           path_geom_column             IN VARCHAR2,
                           path_link_table_name         IN VARCHAR2,
                           subpath_table_name           IN VARCHAR2,
                           subpath_geom_column          IN VARCHAR2,
                           is_complex                   IN BOOLEAN DEFAULT FALSE,
                           storage_parameters           IN VARCHAR2 DEFAULT '');
  
  -----------------
  -- @deprecated --
  -----------------
  -- create a general network creation 
  PROCEDURE create_network(network                      IN VARCHAR2,
                           geom_type                    IN VARCHAR2,
                           no_of_hierarchy_levels       IN NUMBER,
                           is_directed                  IN BOOLEAN,
                           node_table_name              IN VARCHAR2,
                           node_geom_column             IN VARCHAR2,
                           node_cost_column             IN VARCHAR2,
                           link_table_name              IN VARCHAR2,
                           link_geom_column             IN VARCHAR2,
                           link_cost_column             IN VARCHAR2,
                           lrs_table_name               IN VARCHAR2,
                           lrs_geom_column              IN VARCHAR2,
                           path_table_name              IN VARCHAR2,
                           path_geom_column             IN VARCHAR2,
                           path_link_table_name         IN VARCHAR2,
                           is_complex                   IN BOOLEAN DEFAULT FALSE,
                           storage_parameters           IN VARCHAR2 DEFAULT '');                


  -----------------
  -- @deprecated --
  -----------------
  -- create a general network creation 
  PROCEDURE create_network(network                      IN VARCHAR2,
                           geom_type                    IN VARCHAR2,
                           no_of_hierarchy_levels       IN NUMBER,
                           is_directed                  IN BOOLEAN,
                           node_with_cost               IN BOOLEAN,
                           lrs_table_name               IN VARCHAR2,
                           lrs_geom_column              IN VARCHAR2,
                           is_complex                   IN BOOLEAN DEFAULT FALSE,
                           storage_parameters           IN VARCHAR2 DEFAULT '');


  -- validate a network
  FUNCTION validate_network(network IN VARCHAR2, check_data IN VARCHAR2 default 'FALSE')
    RETURN VARCHAR2;

  -- validate the table consistency of a network
  FUNCTION validate_consistency(network IN VARCHAR2, is_fast IN VARCHAR2 default 'TRUE')
    RETURN VARCHAR2;

  -- create an empty  node table with necessary columns
  PROCEDURE create_node_table(table_name                in varchar2, 
                              geom_type                 in varchar2,
                              geom_column               in varchar2,
                              cost_column               in varchar2,
                              partition_column          in varchar2,
                              no_of_hierarchy_levels    in number,
                              is_complex                in boolean default false,
                              storage_parameters        in varchar2 default '');


  -- create an empty  node table with necessary columns
  PROCEDURE create_node_table(table_name                in varchar2, 
                              geom_type                 in varchar2,
                              geom_column               in varchar2,
                              cost_column               in varchar2,
                              no_of_hierarchy_levels    in number,
                              is_complex                in boolean default false,
                              storage_parameters        in varchar2 default '');



  -- create an empty link table with necessary columns
  PROCEDURE create_link_table(table_name                in varchar2,
                              geom_type                 in varchar2,
                              geom_column               in varchar2,
                              cost_column               in varchar2,
                              no_of_hierarchy_levels    in number,
                              add_bidirected_column     in boolean default false,
                              storage_parameters        in varchar2 default '');

  -- create an empty compact path table with necessary columns
  PROCEDURE create_path_table(table_name in varchar2,  geom_column in varchar2,
                              storage_parameters   IN VARCHAR2 DEFAULT '');
  -- create an empty compact subpath table with necessary columns
  PROCEDURE create_subpath_table(table_name in varchar2,  geom_column in varchar2,
                              storage_parameters   IN VARCHAR2 DEFAULT '');

  -- create an empty compact path table with necessary columns
  PROCEDURE create_path_link_table(table_name in varchar2,
                                   storage_parameters   IN VARCHAR2 DEFAULT '');

  -- create an empty lrs geom table with necessary columns
  PROCEDURE create_lrs_table(table_name in varchar2,  geom_column in varchar2,
                              storage_parameters   IN VARCHAR2 DEFAULT '');

  -- create an empty partition table with necessary columns
  PROCEDURE create_partition_table(table_name in varchar2);

  -- create an empty partition blob table with necessary schema
  PROCEDURE create_partition_blob_table(table_name in varchar2);

  -- create an empty component table with necessary schema
  PROCEDURE create_component_table(table_name in varchar2);

  -- validate a node schema
  FUNCTION validate_node_schema(network IN VARCHAR2)
    RETURN VARCHAR2;

  -- validate a link schema
  FUNCTION validate_link_schema(network IN VARCHAR2)
    RETURN VARCHAR2;

  -- validate a path schema
  FUNCTION validate_path_schema(network IN VARCHAR2)
    RETURN VARCHAR2;

  -- validate a subpath schema
  FUNCTION validate_subpath_schema(network IN VARCHAR2)
    RETURN VARCHAR2;

  -- validate an lrs geom schema
  FUNCTION validate_lrs_schema(network IN VARCHAR2)
    RETURN VARCHAR2;

  -- validate a partition table schema
  FUNCTION validate_partition_schema(network IN VARCHAR2)
    RETURN VARCHAR2;

  -- validate necessary partition blob table schema and blob content
  FUNCTION validate_partition_blob_schema(network IN VARCHAR2)
    RETURN VARCHAR2;

  -- validate necessary connected component schema
  FUNCTION validate_component_schema(network IN VARCHAR2)
    RETURN VARCHAR2;

  --
  -- drop a network
  -- it drops :
  -- node table, link table, and path table
  -- network metadata
  --

  PROCEDURE drop_network(network        in varchar2);

  --
  -- create a point geometry from an LRS geometry and a measure
  --
  FUNCTION get_lrs_node_geometry(network        in VARCHAR2,
                                 node_id        in number)
        RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;

  --
  -- create a point geometry from a topology
  --
  FUNCTION get_topo_node_geometry(network       in VARCHAR2,
                                  node_id       in number)
        RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;


  --
  -- get the node geometry
  --
  FUNCTION get_node_geometry(network    in VARCHAR2,
                             node_id    in number)
        RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;


  --
  -- create linestring geometry from an LRS geometry and start/end measure
  --
  FUNCTION get_lrs_link_geometry(network        in VARCHAR2,
                                 link_id        in number)

        RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;

  --
  -- create linestring geometry from a topo geometry
  --
  FUNCTION get_topo_link_geometry(network       in VARCHAR2,
                                  link_id       in number)

        RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;


  --
  -- get the link geometry
  --
  FUNCTION get_link_geometry(network    in VARCHAR2,
                             link_id    in number,
                             start_percentage IN NUMBER default 0, 
                             end_percentage   IN NUMBER default 1.0)

        RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;



  -- 
  -- network type queries
  --  
  FUNCTION is_spatial(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(is_spatial,WNDS,WNPS,RNPS);

  FUNCTION is_logical(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(is_logical,WNDS,WNPS,RNPS);

  FUNCTION is_hierarchical(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(is_hierarchical,WNDS,WNPS,RNPS);

  -----------------
  -- @deprecated --
  -----------------
  -- a simple network does not refer nodes/links in another networks
  -- a complex network has the network_type anything other than  'COMPLEX'
  -- before 10GR1, all networks are simple networks
  FUNCTION is_simple(network IN VARCHAR2)
    RETURN VARCHAR2;

  -----------------
  -- @deprecated --
  -----------------
  -- a complex network can refer nodes/links in another networks
  -- a complex network has the network_type = 'COMPLEX'
  -- after 10GR2, a network can refer nodes/links in other networks (network_id, and element_id)
  FUNCTION is_complex(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(is_complex,WNDS,WNPS,RNPS);

  FUNCTION is_simple(network IN VARCHAR2,path_id in number)
    RETURN VARCHAR2;

  FUNCTION is_link_in_path(network IN VARCHAR2,path_id in number, link_id in number)
    RETURN VARCHAR2;

  FUNCTION is_node_in_path(network IN VARCHAR2,path_id in number,node_id in number)
    RETURN VARCHAR2;


  FUNCTION sdo_geometry_network(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(sdo_geometry_network,WNDS,WNPS,RNPS);

  FUNCTION lrs_geometry_network(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(lrs_geometry_network,WNDS,WNPS,RNPS);

  FUNCTION topo_geometry_network(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(topo_geometry_network,WNDS,WNPS,RNPS);



  --
  -- copy network structure
  --

 PROCEDURE copy_network(source_network  in varchar2, 
                        target_network  in varchar2,
                        storage_parameters in varchar2 default '');
 

  --
  -- create delete trigger on node/link table
  -- 
 
 PROCEDURE create_delete_trigger(network in varchar2);


  -- return the hierarchy_level of a node
  FUNCTION get_node_hierarchy_level(network IN VARCHAR2, node_id in number)
    RETURN NUMBER;
 

  --
  -- add referential constraints
  --

  PROCEDURE create_ref_constraints(network IN VARCHAR2);

  --
  -- drop referential constraints
  --

  PROCEDURE drop_ref_constraints(network IN VARCHAR2);

  --
  -- enable referential constraints
  --

  PROCEDURE enable_ref_constraints(network IN VARCHAR2);


  --
  -- disable referential constraints
  --

  PROCEDURE disable_ref_constraints(network IN VARCHAR2);



  --
  -- add an geometry metadata entry
  --

  PROCEDURE insert_geom_metadata(geom_table_name       IN VARCHAR2,
                                 geom_column_name      IN VARCHAR2,
                                 diminfo               IN MDSYS.SDO_DIM_ARRAY,
                                 srid                  IN NUMBER);
  --PRAGMA RESTRICT_REFERENCES(insert_geom_metadata,WNPS,RNPS);


  --
  -- add geometry metadata entries for a spatial network
  --

  PROCEDURE insert_geom_metadata(network               IN VARCHAR2,     
                                 diminfo               IN MDSYS.SDO_DIM_ARRAY,
                                 srid                  IN NUMBER);
  --PRAGMA RESTRICT_REFERENCES(insert_geom_metadata,WNPS,RNPS);



  --
  -- return the ids of isolated nodes
  --

  FUNCTION get_isolated_nodes(network IN VARCHAR2)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC ;

  --
  -- return the ids of invalid nodes
  --

  FUNCTION get_invalid_nodes(network IN VARCHAR2)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC ;


  --
  -- return the ids of invalid links
  --

  FUNCTION get_invalid_links(network IN VARCHAR2)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC ;

  --
  -- return the ids of invalid paths
  --

  FUNCTION get_invalid_paths(network IN VARCHAR2)
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC ;


  -----------------
  -- @deprecated --
  -----------------
  --
  -- add path-link information to the path-link table
  -- the seq no is indicated by the order in the given link array
  --   
  PROCEDURE insert_path_link_info(network               IN VARCHAR2,    
                                  path_id               IN NUMBER,
                                  links                 IN MDSYS.SDO_NUMBER_ARRAY,
                                  is_simple             IN BOOLEAN DEFAULT TRUE) ;                               


  --
  -- delete a node from a network
  -- 
  --   
  PROCEDURE delete_node(network         IN VARCHAR2,    
                        node_id         IN NUMBER) ;

  --
  -- delete a link from a network
  -- 
  --   
  PROCEDURE delete_link(network         IN VARCHAR2,    
                        link_id         IN NUMBER) ;


  --
  -- delete a path from a network
  -- 
  --   
  PROCEDURE delete_path(network         IN VARCHAR2,    
                        path_id         IN NUMBER) ;


  --
  -- delete a subpath from a network
  -- 
  --   
  PROCEDURE delete_subpath(network      IN VARCHAR2,    
                           subpath_id   IN NUMBER) ;

  -----------------
  -- @deprecated --
  -----------------
  --
  -- change a spatial network into a logical network (Metadata Level)
  -- 
  --   
  PROCEDURE switch_to_logical_network(network   IN VARCHAR2);   
  PRAGMA RESTRICT_REFERENCES(switch_to_logical_network,WNPS,RNPS);

  -----------------
  -- @deprecated --
  -----------------
  --
  -- change a logical network into a spatial network (Metadata Level)
  -- 
  --   
  PROCEDURE switch_to_spatial_network(network       IN VARCHAR2,
                                      node_geom_col IN VARCHAR2,        
                                      link_geom_col IN VARCHAR2,        
                                      path_geom_col IN VARCHAR2,
                                      subpath_geom_col IN VARCHAR2);    


  -----------------------------------------------------
  -- @deprecated: use network metadata views instead --
  -----------------------------------------------------
  -- return the topology of a topology network
  FUNCTION get_topology(network IN VARCHAR2)
    RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(get_topology,WNDS,WNPS,RNPS);

  -- compute the geometry of a path from its constituent link geometries 
  FUNCTION compute_path_geometry(network IN VARCHAR2, 
                                 path_id IN NUMBER, 
                                 tolerance IN NUMBER)
    RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;

  -- Partition the nodes in the network and write the result into the
  -- partition table.
  PROCEDURE spatial_partition(network IN VARCHAR2,
                              partition_table_name IN VARCHAR2,
                              max_num_nodes IN NUMBER,
                              log_loc   IN VARCHAR2,
                              log_file  IN VARCHAR2,
                              open_mode IN VARCHAR2 DEFAULT 'a',
                              link_level IN INTEGER DEFAULT 1);  
                              
  -- Generate or regenerate blobs for all the partitions.
  -- @param regenerate_node_levels whether to overwrite existing node level table.
  --                               Set to true if there are nodes added/deleted to/from second or higher
  --                               link levels, since the last time blobs were generated.
  PROCEDURE generate_partition_blobs(
                              network                   IN VARCHAR2,
                              link_level                IN NUMBER DEFAULT 1,
                              partition_blob_table_name IN VARCHAR2,
                              include_user_data         IN BOOLEAN,
                              commit_for_each_blob      IN BOOLEAN DEFAULT true,
                              log_loc   IN VARCHAR2,
                              log_file  IN VARCHAR2,
                              open_mode IN VARCHAR2 DEFAULT 'a',
                              perform_delta_update IN BOOLEAN DEFAULT false,
                              regenerate_node_levels IN BOOLEAN DEFAULT false);

  -- generate or regenerate the blob for the specified partition
  -- into the partition blob table
  -- assumption: partition blob table already exists
  PROCEDURE generate_partition_blob(
                              network           IN VARCHAR2,
                              link_level        IN NUMBER DEFAULT 1,
                              partition_id      IN NUMBER,
                              include_user_data IN BOOLEAN,
                              log_loc   IN VARCHAR2,
                              log_file  IN VARCHAR2,
                              open_mode IN VARCHAR2 DEFAULT 'a',
                              perform_delta_update IN BOOLEAN DEFAULT false);

  -- Find connected components for the network on the specified link level,
  -- and store node_id component_id relation into the component table.
  PROCEDURE find_connected_components(
                              network              IN VARCHAR2,
                              link_level           IN NUMBER DEFAULT 1,
                              component_table_name IN VARCHAR2,
                              log_loc   IN VARCHAR2,
                              log_file  IN VARCHAR2,
                              open_mode IN VARCHAR2 DEFAULT 'a');

  -- Sets the maximum java heap size for the java stored procedure.
  PROCEDURE set_max_java_heap_size(bytes NUMBER);

  -- Sets the logging level for both the plsql subprograms and
  -- the java stored procedure.
  PROCEDURE set_logging_level( level     IN NUMBER );

  -- Returns the logging level
  FUNCTION get_logging_level RETURN NUMBER;

  -- Loads the configuration xml for the java stored procedure.
  PROCEDURE load_config( file_directory  IN VARCHAR2 ,
                         file_name       IN VARCHAR2 );

  -- return the partition size in bytes
  FUNCTION get_partition_size(network IN VARCHAR2,
                              partition_id IN NUMBER,
                              link_level IN NUMBER DEFAULT 1,
                              include_user_data IN VARCHAR2 DEFAULT 'FALSE',
                              include_spatial_data IN VARCHAR2 DEFAULT 'FALSE')
  RETURN NUMBER;

  --- register given network constraint into user_sdo_network_constraints
  PROCEDURE register_constraint(
    constraint_name VARCHAR2, class_name  VARCHAR2,
    directory_name VARCHAR2,  description VARCHAR2);

  --- deregister given constraint from user_sdo_network_constraints
  PROCEDURE deregister_constraint(
    constraint_name  VARCHAR2);

  -- clear the content of the given network's related history tables
  PROCEDURE db_sync_clear(network IN VARCHAR2);

  -- disable database synchronization option for the given network
  PROCEDURE db_sync_disable(network IN VARCHAR2);

  -- enable database synchronization option for the given network
  PROCEDURE db_sync_enable(network IN VARCHAR2, base_node_table IN VARCHAR2 default NULL,
    base_link_table IN VARCHAR2 default NULL);

  -- for the given network and link level, get updates between the given 
  -- timestamp and the current largest timestamp recorded
  FUNCTION db_sync_get_update(network IN VARCHAR2, last_get_time  IN TIMESTAMP, 
    node_change_history OUT SDO_NET_UPD_HIST_NTBL,
    link_change_history OUT SDO_NET_UPD_HIST_TBL)
    RETURN TIMESTAMP;
  
  -- the variant using the cursor to facilitate the calls made by JDBC  
  FUNCTION db_sync_get_update(network IN VARCHAR2, last_get_time  IN TIMESTAMP, 
    node_change_history OUT ref_cursor,
    link_change_history OUT ref_cursor)
    RETURN TIMESTAMP;    

  --- register given java object into user_sdo_network_java_objects
  PROCEDURE register_java_object(
    name VARCHAR2, class_name  VARCHAR2,
    directory_name VARCHAR2,  description VARCHAR2, java_interface VARCHAR2);

  --- deregister given java object  from user_sdo_network_java_objects
  PROCEDURE deregister_java_object(
    name  VARCHAR2);
  --- validate lod partition information
  FUNCTION validate_partition_info(network IN VARCHAR2,check_data IN VARCHAR2 default 'FALSE')
    RETURN VARCHAR2;

  -- return the percentage of the given pt geometry from the start of the linestring geometry
  -- if the pt geometry is not on the link geometry, the nearest pt on the link geometry is used 
  -- percentage is between [0,1]
  FUNCTION get_percentage(network IN VARCHAR2, link_id IN NUMBER, pt_geom IN mdsys.sdo_geometry)
    RETURN NUMBER;


  -- return the pt geometry on the givne link geometry based on the given percentage
  -- if the pt geometry is not on the link geometry, the nearest pt on the link geometry is used 
  -- valid percentage is between [0,1]
  FUNCTION get_pt(network IN VARCHAR2, link_id IN NUMBER, percentage IN NUMBER)
        RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;

  -- return the geometry on the givne link geometry based on the given percentages
  -- valid percentage is between [0,1]
  FUNCTION get_geometry(network IN VARCHAR2, link_id IN NUMBER, start_percentage IN NUMBER, end_percentage IN NUMBER)
        RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;

  -- Generates node levels for the specified multi-level network.
  -- If the the input network is single level, do nothing.
  -- @param overwrite: whether to overwrite existing node level table or not
  PROCEDURE generate_node_levels(
    network   in varchar2,
    node_level_table_name in varchar2,
    overwrite in boolean default false,
    log_loc   IN VARCHAR2,
    log_file  IN VARCHAR2,
    open_mode IN VARCHAR2 DEFAULT 'a');

  -- Make sure the data in the newwork tables are consistent.
  PROCEDURE update_consistency(network in VARCHAR2);

  -- create the logical network partitions on node table
  PROCEDURE logical_partition(network IN VARCHAR2,
                              partition_table_name IN VARCHAR2,
                              max_num_nodes IN NUMBER,
                              log_loc   IN VARCHAR2,
                              log_file  IN VARCHAR2,
                              open_mode IN VARCHAR2 DEFAULT 'a',
                              link_level IN INTEGER DEFAULT 1);  

  -- Create logical network partitions on node table
  -- with focus on minimizing partition degree
  PROCEDURE logical_partition(network IN VARCHAR2,
                              partition_table_name IN VARCHAR2,
                              max_num_nodes IN NUMBER,
                              log_loc   IN VARCHAR2,
                              log_file  IN VARCHAR2,
                              open_mode IN VARCHAR2 DEFAULT 'a',
                              link_level IN INTEGER DEFAULT 1,
                              part_size_tolerance IN NUMBER);
 
  PROCEDURE logical_powerlaw_partition(network IN VARCHAR2,
                              partition_table_name IN VARCHAR2,
                              max_num_nodes  IN NUMBER,
                              log_loc   IN VARCHAR2,
                              log_file  IN VARCHAR2,
                              open_mode IN VARCHAR2 default 'a',
                              link_level IN INTEGER default 1,
                              part_size_tolerance IN NUMBER default 0);


  -- Returns the ordinate of a point geometry given the ordinate index
  -- the point geometry can be a 2d standard geometry or an LRS geometry
    
  FUNCTION get_pt_geom_ord(geometry IN MDSYS.SDO_GEOMETRY, idx IN INTEGER)
    RETURN NUMBER;


  ----------------------------
  -- BEGIN Feature Modeling --
  ----------------------------

  FUNCTION GET_FEATURE_LAYER_ID(
    network_name          IN VARCHAR2,
    feature_layer_name    IN VARCHAR2)
  RETURN NUMBER;

  -- Adds a feature layer.
  -- A feature layer ID will be automatically generated
  -- for the feature layer.
  PROCEDURE ADD_FEATURE_LAYER(
    network_name          IN VARCHAR2,
    feature_layer_name    IN VARCHAR2,
    feature_layer_type    IN NUMBER,
    feature_table         IN VARCHAR2,
    relation_table        IN VARCHAR2,
    hierarchy_table       IN VARCHAR2);

  -- Drops a feature layer.
  -- @param drop_tables   If set to false, then only the feature
  --                      layer metadata will be deleted. All the 
  --                      relevant tables will remain untouched. 
  --                      If set to true, then all relevant tables,
  --                      including feature table, relation table 
  --                      and hierarchy table, will be dropped.
  PROCEDURE DROP_FEATURE_LAYER(
    network_name          IN VARCHAR2,
    feature_layer_name    IN VARCHAR2,
    drop_tables           IN BOOLEAN DEFAULT FALSE);

  -- Adds a feature to the input feature layer.
  PROCEDURE ADD_FEATURE(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER,
    feature_elements      IN SDO_NET_FEAT_ELEM_ARRAY DEFAULT NULL,
    child_feature_ids     IN SDO_NET_LAYER_FEAT_ARRAY DEFAULT NULL,
    check_integrity       IN BOOLEAN DEFAULT TRUE);

  -- Adds a feature element to the input feature.
  -- The input feature element will be appended to the end of the 
  -- existing feature elements in the feature.
  PROCEDURE ADD_FEATURE_ELEMENT(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER,
    feature_element       IN SDO_NET_FEAT_ELEM,
    sequence_number       IN NUMBER DEFAULT NULL,
    check_integrity       IN BOOLEAN DEFAULT TRUE);

  -- Adds an array of feature elements to a feature.
  -- The input feature elements will be appended to the end of the 
  -- existing feature elements in the feature.
  PROCEDURE ADD_FEATURE_ELEMENTS(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER,
    feature_elements      IN SDO_NET_FEAT_ELEM_ARRAY,
    check_integrity       IN BOOLEAN DEFAULT TRUE);

  -- Adds a child feature. This precedure assumes that the child feature
  -- already exists.
  PROCEDURE ADD_CHILD_FEATURE(
    parent_layer_id       IN NUMBER,
    parent_feature_id     IN NUMBER,
    child_layer_id        IN NUMBER,
    child_feature_id      IN NUMBER,
    sequence_number       IN NUMBER DEFAULT NULL,
    check_integrity       IN BOOLEAN DEFAULT TRUE);

  -- Adds child features. This procedure assumes that the child features 
  -- already exist.
  PROCEDURE ADD_CHILD_FEATURES(
    parent_layer_id       IN NUMBER,
    parent_feature_id     IN NUMBER,
    child_feature_ids     IN SDO_NET_LAYER_FEAT_ARRAY,
    check_integrity       IN BOOLEAN DEFAULT TRUE);

  -- Deletes the input feature elements from the feature.
  PROCEDURE DELETE_FEATURE_ELEMENTS(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER,
    feature_elements      IN SDO_NET_FEAT_ELEM_ARRAY,
    delete_net_elems      IN BOOLEAN DEFAULT FALSE);

  -- Deletes the feature elements at the given sequence numbers.
  PROCEDURE DELETE_FEATURE_ELEMENTS_AT(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER,
    sequence_numbers      IN MDSYS.SDO_NUMBER_ARRAY,
    delete_net_elems      IN BOOLEAN DEFAULT FALSE);

  -- Remove the parent-child relationship for the input child features.
  PROCEDURE DELETE_CHILD_FEATURES(
    parent_layer_id       IN NUMBER,
    parent_feature_id     IN NUMBER,
    child_feature_ids     IN SDO_NET_LAYER_FEAT_ARRAY);

  -- Remove the parent-child relationship for the child features 
  -- at the given sequence numbers.
  PROCEDURE DELETE_CHILD_FEATURES_AT(
    parent_layer_id      IN NUMBER,
    parent_id            IN NUMBER,
    sequence_numbers     IN MDSYS.SDO_NUMBER_ARRAY);

  -- Deletes the features with the given feature IDs.
  -- If delete_net_elems is set to true, then all network elements 
  -- that are referenced only by the input features are also deleted.
  -- If delete_children is set to true, then all child features
  -- that are referenced only by the input features are also deleted.
  PROCEDURE DELETE_FEATURES(
    feature_layer_id          IN NUMBER,
    feature_ids               IN MDSYS.SDO_NUMBER_ARRAY,
    delete_net_elems          IN BOOLEAN DEFAULT FALSE,
    delete_children           IN BOOLEAN DEFAULT FALSE);

  -- Deletes the dangling features in the given feature layer.
  -- A dangling feature is a feature ths is not associated with any 
  -- network elements.
  PROCEDURE DELETE_DANGLING_FEATURES(
    feature_layer_id      IN NUMBER);

  -- Returns the IDs of the dangling features.
  -- A dangling feature is a feature ths is not associated with any 
  -- network elements.
  FUNCTION GET_DANGLING_FEATURES(
    feature_layer_id      IN NUMBER)
  RETURN MDSYS.SDO_NUMBER_ARRAY;

  -- Deletes the phantom features in the given feature layer.
  -- A phantom feature is a feature that references nonexistent 
  -- network elements.
  PROCEDURE DELETE_PHANTOM_FEATURES(
    feature_layer_id      IN NUMBER);

  -- Returns the IDs of the phantom features.
  -- A phantom feature is a feature that references nonexistent 
  -- network elements.
  FUNCTION GET_PHANTOM_FEATURES(
    feature_layer_id      IN NUMBER)
  RETURN MDSYS.SDO_NUMBER_ARRAY;

  -- Returns the nodes that are not referenced by
  -- any feature in any feature layer.
  FUNCTION GET_DANGLING_NODES(
    network               IN VARCHAR2)
  RETURN MDSYS.SDO_NUMBER_ARRAY;

  -- Returns the links that are not referenced by
  -- any feature in any feature layer.
  FUNCTION GET_DANGLING_LINKS(
    network               IN VARCHAR2)
  RETURN MDSYS.SDO_NUMBER_ARRAY;

  -- Deletes the network nodes that are not referenced by
  -- any feature in any feature layer.
  PROCEDURE DELETE_DANGLING_NODES(
    network               IN VARCHAR2);

  -- Deletes the network links that are not referenced by
  -- any feature in any feature layer.
  PROCEDURE DELETE_DANGLING_LINKS(
    network               IN VARCHAR2);

  -- Returns the IDs of the features that references the given nodes.
  FUNCTION GET_FEATURES_ON_NODES(
    feature_layer_id      IN NUMBER,
    node_ids              IN MDSYS.SDO_NUMBER_ARRAY)
  RETURN MDSYS.SDO_NUMBER_ARRAY;

  -- Returns the IDs of the features that references the given links.
  FUNCTION GET_FEATURES_ON_LINKS(
    feature_layer_id      IN NUMBER,
    link_ids              IN MDSYS.SDO_NUMBER_ARRAY)
  RETURN MDSYS.SDO_NUMBER_ARRAY;

  -- Returns the feature layer ID and feature ID of the child features.
  FUNCTION GET_CHILD_FEATURE_IDS(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER
  )
  RETURN SDO_NET_LAYER_FEAT_ARRAY;

  -- Returns the feature layer ID and feature ID of the parent features.
  FUNCTION GET_PARENT_FEATURE_IDS(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER
  )
  RETURN SDO_NET_LAYER_FEAT_ARRAY;

  -- Updates the feature elements, child features and/or feature
  -- user data.
  -- @param feature_elements  new feature elements. If null, then the existing
  --                          feature elements are left unchanged. If empty, then
  --                          the existing feature elements are removed.
  -- @param child_features    new child features. If null, then the existing
  --                          child features are left unchanged. If empty, then 
  --                          relationship with the existing child features are removed.
  PROCEDURE UPDATE_FEATURE(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER,
    feature_elements      IN SDO_NET_FEAT_ELEM_ARRAY DEFAULT NULL,
    child_feature_ids     IN SDO_NET_LAYER_FEAT_ARRAY DEFAULT NULL,
    check_integrity       IN BOOLEAN DEFAULT TRUE);

  -- Updates the feature element at the given sequence number.
  PROCEDURE UPDATE_FEATURE_ELEMENT(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER,
    sequence_number       IN NUMBER,
    feature_element       IN SDO_NET_FEAT_ELEM,
    check_integrity       IN BOOLEAN DEFAULT TRUE);

  -- Returns the feature elements in the given feature.
  FUNCTION GET_FEATURE_ELEMENTS(
    feature_layer_id      IN NUMBER,
    feature_id            IN NUMBER)
  RETURN SDO_NET_FEAT_ELEM_ARRAY;

  ----------------------------
  -- END Feature Modeling --
  ----------------------------

  -- Create and/or populate link table in parent network based on
  -- the content of the hierarchy table
  PROCEDURE GENERATE_PARENT_LINK_TABLE(
    parent_network   IN VARCHAR2,
    cost_function    IN VARCHAR2);

  -- Find the child link IDs on the given link level of the child network
  FUNCTION GET_LINKS_IN_CHILD_NETWORK(
    network           IN VARCHAR2,
    link_id           IN NUMBER)
  RETURN MDSYS.SDO_NUMBER_ARRAY;

  -- Find the child node IDs on the given link level of the child network
  FUNCTION GET_NODES_IN_CHILD_NETWORK(
    network           IN VARCHAR2,
    node_id           IN NUMBER)
  RETURN MDSYS.SDO_NUMBER_ARRAY;

  -- Sends xml requests to the given URL, and returns the xml response.
  FUNCTION POST_XML(
    url       IN VARCHAR2,
    request   IN XMLTYPE)
  RETURN XMLTYPE;

  -- Checks if the network (spatial network) is geodetic('TRUE'), 'FALSE' otherwise
  -- Return NULL  if the network is logical

  FUNCTION is_geodetic(network IN VARCHAR2)
    RETURN VARCHAR2;


  -- This function checks whether the input link interval
  -- covers given point on the same link.
  -- It returns 'TRUE' if the point is covered by the link
  -- interval; 'FALSE' otherwise.
  FUNCTION is_covered_by_link_interval(
    query_percentage IN NUMBER,
    interval_start_percentage IN NUMBER,
    interval_end_percentage IN NUMBER)
  RETURN VARCHAR2;


  -- Returns the cost from (to) network buffer center to (from) the query point
  -- based on the start and end costs of the link interval defined on
  -- the same link as the query point.
  -- Returns null if not covered.
  FUNCTION get_buffer_cost(
    query_percentage IN NUMBER,
    interval_start_percentage IN NUMBER,
    interval_end_percentage IN NUMBER,
    interval_start_cost IN NUMBER,
    interval_end_cost IN NUMBER)
  RETURN NUMBER;

END sdo_net;
/
SHOW ERRORS;

Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@?/rdbms/admin/sqlsessend.sql
Rem ********************************************************************


OHA YOOOO