MINI MINI MANI MO

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

Rem
Rem $Header: sdo/admin/sdordfh.sql /main/153 2017/10/30 13:43:40 sdas Exp $
Rem
Rem sdordfh.sql
Rem
Rem Copyright (c) 2004, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      sdordfh.sql - <one-line expansion of the name>
Rem
Rem    DESCRIPTION
Rem      SDO_RDF_INTERNAL package
Rem
Rem    NOTES
Rem      package BODY in sdordfb.sql
Rem
Rem    BEGIN SQL_FILE_METADATA
Rem    SQL_SOURCE_FILE: sdo/admin/sdordfh.sql
Rem    SQL_SHIPPED_FILE: md/admin/sdordfh.sql
Rem    SQL_PHASE: SDORDFH
Rem    SQL_STARTUP_MODE: NORMAL
Rem    SQL_IGNORABLE_ERRORS: NONE
Rem    SQL_CALLING_FILE: sdo/admin/semrelod.sql
Rem    END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    sdas        10/12/17 - elim SELECT USER use
Rem    sdas        10/12/17 - tracking bug 26182246: elim CURRENT_USER use
Rem    sdas        09/22/17 - truncate_rdfview_model: make truncating shallow
Rem                           model optional
Rem    sdas        09/17/17 - add options param to recreate_link_views and
Rem                           create_rdf_model_views
Rem    matperry    08/31/17 - add drop_extended_stats
Rem    sdas        08/30/17 - stage_sem_network
Rem    echong      08/07/17 - make indexes invisible for rdf inmemory
Rem    sdas        07/29/17 - callContext: add enable_parallel_dml_hint
Rem    matperry    07/27/17 - support estimate_percent for
Rem                           sem_perf.gather_stats
Rem    matperry    07/25/17 - fix some SQL injection issues with
Rem                           subpartitioning
Rem    matperry    07/24/17 - handle very large virtual model view definition
Rem    matperry    06/26/17 - add R2RML TTL option for create_rdfview_model
Rem    anestrad    06/23/17 - Add user_name to drop_rdf_network
Rem    sdas        06/21/17 - add_rdf_index: add flags parameter
Rem    matperry    06/16/17 - enhance gather stats apis
Rem    sdas        06/12/17 - subpartitioned sem network
Rem    anestrad    05/25/17 - Add user name to create_rdf_network
Rem    anestrad    05/24/17 - Add user name to system_callout_imp
Rem    anestrad    05/22/17 - Add user name clear_net_data
Rem    sdas        04/04/17 - bug 25223880
Rem    echong      04/04/17 - 25830773: enable RDF in-memory virutal column
Rem                           partition level population
Rem    rjanders    03/09/17 - Add missing SQL_FILE_METADATA information
Rem    echong      12/22/16 - make IMVM id-based
Rem    sdas        08/03/16 - XbranchMerge sdas_bug-24312472 from
Rem                           st_sdo_12.2.0.1.0
Rem    sdas        07/21/16 - bug 24312472: do not expose package vars
Rem    echong      05/17/16 - rdf in-memory virtual model support
Rem    matperry    04/11/16 - add some upgrade helper procedures
Rem    manlopez    03/15/16 - RDF2RDF: getting SDO_SRID for SDO_GEOMETRY types
Rem    echong      03/02/16 - RDF in-memory processing
Rem    matperry    02/05/16 - add options argument to create_sem_model
Rem    matperry    02/04/16 - support more compression schemes for network
Rem    matperry    02/03/16 - add options argument to create_sem_network
Rem    sdas        01/02/16 - forward merge from 12.1.0.2.0 patch for bug
Rem                           21901250
Rem    echong      12/17/15 - improve order-by query processing
Rem    sdas        12/10/15 - add esclex()
Rem    manlopez    12/07/15 - Including GET_TABLESPACE_NAME into the package
Rem                           MDSYS.SDO_RDF_INTERNAL.
Rem    sdas        11/20/15 - value replacement
Rem    anestrad    07/09/15 - Add populate_crs_table procedure
Rem    matperry    05/22/15 - add create_rdf_ddl_trigger
Rem    anestrad    05/19/15 - Add get_geo_mindex_info procedure
Rem    anestrad    05/15/15 - Add GEO_MDATA_MCOL constant
Rem    rjanders    01/17/15 - long identifier project phase 1
Rem    matperry    10/27/14 - support non-autonomous insert_triple
Rem    matperry    09/03/14 - refactor update_model to be invoker rights
Rem    matperry    05/23/14 - change update_stmt argument to CLOB in
Rem                           apply_update
Rem    sdas        05/07/14 - continue LTC implementation
Rem    matperry    04/18/14 - add update_model
Rem    joseram     03/25/14 - comment
Rem    sdas        12/12/13 - relax bnode label syntax
Rem    rjanders    09/16/13 - OCCS: Remove hardtabs
Rem    rjanders    03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem                           initialization
Rem    sdas        01/05/13 - XbranchMerge sdas_bug-10406620_12.1 from
Rem                           st_sdo_12.1.0.1
Rem    matperry    01/03/13 - move import export routines from sdo_rdf_exp_imp
Rem                           to correct authid problems
Rem    sdas        12/27/12 - XbranchMerge sdas_lrg-8649257 from
Rem                           st_sdo_12.1.0.1
Rem    sdas        12/24/12 - add chk_numeric
Rem    matperry    12/21/12 - update create_rdf_model_views to give r2b2rdf
Rem                           grants
Rem    matperry    12/20/12 - add recreate_rulebase_views
Rem    matperry    12/14/12 - add owner argument to create_rdf_model_views
Rem    sdas        11/15/12 - misc fixes
Rem    sdas        11/08/12 - remove basePrefix param from export_rdfview_model
Rem    matperry    10/26/12 - add model_type for version enabled
Rem    spsundar    09/26/12 - change type of tables arg in create_rdfview_model
Rem    sdas        09/07/12 - populate DBColType in RR tab and adj objeDatatype
Rem    sdas        09/07/12 - prep for DBColInfo use by adj for inv ad def
Rem                           right
Rem    sdas        09/05/12 - add DBcolType col to RR tab
Rem    alwu        08/02/12 - expose get_model_pname
Rem    alwu        08/02/12 - add new STATS APIs
Rem    sdas        05/28/12 - shrink CRV interface
Rem    matperry    05/15/12 - update for arbitrary entailment support in
Rem                           virtual models
Rem    sdas        03/29/12 - rr_tab: put dict like DB own/tab/col names
Rem    joseram     03/29/12 - Including option Materialize=T in create_rdfview_model()
Rem    sdas        03/05/12 - consolidate the two create_rdf_view procedures
Rem    sdas        02/25/12 - simplify create_rdfview_model interface
Rem    spsundar    02/17/12 - rdb2rdf: generating schema info
Rem    spsundar    01/31/12 - add constants for various RDF model types
Rem    krieb       01/19/12 - add get_canon_id convenience method
Rem    krieb       01/18/12 - merge redundant get_value$_type$ logic
Rem                           into get_value$_type$_func (same parsing
Rem                           logic now used for subject, predicates,
Rem                           and object URIs and BNodes)
Rem    krieb       01/18/12 - add function get_canon_entry and add
Rem                           get_value$_type$_func for use by user-defined 
Rem                           inference rules
Rem    alwu        01/03/12 - expose GET_RULES_INDEX_PNAME
Rem    sdas        09/29/11 - RDB2RDF: handling R2RML mapping document
Rem    matperry    04/01/11 - add method to recreate stats partitions
Rem    matperry    03/11/11 - add top-level methods for recreating app triggers
Rem                           and link$ views
Rem    matperry    03/09/11 - add methods for model and virtual model view
Rem                           (re)creation
Rem    sdas        02/24/11 - GET_MODEL_INFO: allow skipping graph id
Rem    krieb       02/10/11 - move statistics table helper methods to internal
Rem                           package
Rem    krieb       01/31/11 - add rdf statistics table used to automatically
Rem                           generate hints (gather_model_stats,
Rem                           drop_model_stats)
Rem    alwu        12/17/10 - name graph local inference
Rem    sdas        12/16/10 - ng: manually add bulk-load changes from 11.2.0.3
Rem                           txn
Rem    sdas        12/14/10 - ng: simple interface for bulk-load into single
Rem                           named-graph
Rem    matperry    12/02/10 - update for removal of sem_geo package
Rem    sdas        11/22/10 - XbranchMerge sdas_ng_11.2.0.2.0_11.2.0.3.0 from
Rem                           st_sdo_11.2.0
Rem    sdas        11/22/10 - XbranchMerge sdas_ng_11.2.0.2.0 from
Rem    matperry    11/05/10 - add datatype indexing
Rem    sdas        08/25/10 - embedding graph info in augm bNode label
Rem    sdas        08/19/10 - named graph
Rem    matperry    08/18/10 - add named graph flags related constants
Rem    sdas        08/13/10 - XbranchMerge sdas_lrg-4786486 from st_sdo_11.2.0
Rem    sdas        07/31/10 - add chklex
Rem    vkolovsk    06/08/10 - add another param to parse_triple
Rem    vkolovsk    07/29/10 - XbranchMerge
Rem                           vkolovsk_rdf_ols_set_triple_label_11.2.0.2.0 from
Rem                           st_sdo_11.2.0
Rem    sdas        05/27/10 - XbranchMerge sdas_bug-9756570 from st_sdo_11.2.0
Rem    sdas        05/27/10 - bug 9756570: sem network index info view
Rem    vkolovsk    05/25/10 - add one more param to decr_link_cost..
Rem    vkolovsk    05/13/10 - add policy_name param to decr_link_cost..
Rem    matperry    03/18/10 - add rdf datatype indexing methods
Rem    sdas        12/30/09 - change MERGE_BATCH_VALUES interface
Rem    matperry    12/14/09 - add tablespace_name parameter to
Rem                           convert_old_rdf_data
Rem    sdas        08/04/09 - for BASIC compress of OLTP data
Rem                           allow MOVE within same tablespace
Rem    sdas        07/13/09 - add encode_into_index_code and get_rdf_index_info
Rem    matperry    05/18/09 - add an extra parameter to convert_old_rdf_data to
Rem                           enable/disable data migration
Rem    alwu        05/14/09 - change DEFAULT to AUTO for degree
Rem    alwu        05/14/09 - update gather_stats API
Rem    matperry    05/12/09 - add cascade option to drop_sem_network
Rem    sdas        05/11/09 - move type_family from rdf_apis_internal to
Rem                           sdo_rdf_internal
Rem    sdas        05/07/09 - convert old RDF data: float/double and
Rem                           'orardf:null '
Rem    sdas        04/22/09 - double and float should not fold into decimal
Rem    vkolovsk    03/23/09  - add rename_model
Rem    sdas        02/10/09  - simple names for model, vm, rulebase,rules index
Rem    ayalaman    11/18/08  - version enabled RDF
Rem    alwu        12/29/08  - XbranchMerge alwu_new_ha_apis from st_sdo_11.1
Rem    matperry    11/10/08  - add constants for rules index status
Rem    matperry    10/31/08  - add create_virtual_model, drop_virtual_model
Rem    sdas        10/14/08  - flex indexing: add COMPRESS param
Rem    sdas        07/21/08  - event trace options
Rem    alwu        07/14/08  - migrate remove_duplicates or remove_duplicates API
Rem    alwu        07/14/08  - add HA APIs
Rem    alwu        06/25/08  - add new APIs for UTH enhancement requests
Rem    sdas        07/19/08  - event trace options
Rem    spsundar    04/18/08  - update arguments to load_batch_values_table
Rem    sdas        03/04/08  - add update_collision_summary
Rem    sdas        02/27/08  - fif: generalize for inference and rules_index
Rem    sdas        02/20/08  - fif: allow more options on alter
Rem    sdas        02/12/08  - flexible indexing framework
Rem    sdas        12/06/07  - collision testing: expose merge_batch_values
Rem    sdas        12/12/07  - use private table for cursor dependency
Rem    alwu        09/13/07  - add statistics on demand
Rem    alwu        08/22/07  - add get_triple_id, is_triple for CLOB
Rem    sdas        06/02/07  - remove tune_rdf_network_10r2_1 procedure
Rem    sdas        05/11/07  - use current_schema as model owner
Rem    sdas        04/16/07  - remove rdf dummy upgrade/downgrade routines
Rem    sdas        03/28/07  - parse_property_value interface change
Rem    sdas        03/16/07  - add REFRESH_SEM_TABLESPACE_NAMES
Rem    sdas        03/09/07  - allow storing diff RDF models in diff
Rem                            tablespaces
Rem    sdas        03/08/07  - add VALIDATE_AND_CONVERT_NAME function
Rem    alwu        02/23/07  - fix index misuse: remove syn_orig_value
Rem    sdas        01/30/07  - cleanup interfaces: IS_TRIPLE, GET_TRIPLE_ID
Rem    sdas        01/28/07  - model LINK_ID as Virtual Col (in RDF_LINK$
Rem                            table)
Rem    sdas        12/14/06  - mark replace_rdf_prefix as WNDS,RNDS,WNPS,RNPS
Rem    sdas        12/04/06  - mark syn_orig_value,pov_* as wnds,rnds,wnps,rnps
Rem    sdas        11/26/06  - mark get_canon_val_null as wnds,rnds,wnps,rnps
Rem    sdas        11/06/06  - change bulk-load interface param names
Rem    sdas        10/23/06  - GET_MODEL_INFO: access via model name only
Rem    sdas        10/02/06  - bulk-load: add priv check
Rem    alwu        09/29/06  - fix bug 5574755: factor out gather_rdf_stats in
Rem                            a separater sem_perf package
Rem    sdas        09/16/06  - add new model_id param to get_value$_type$
Rem    sdas        09/06/06  - remove funcs: type_family_num, type_fam_ext
Rem    sdas        08/11/06  - cleanup: allow (no-)reuse param in INSERT_TRIPLE
Rem    alwu        08/03/06  - add merge append
Rem    sdas        07/27/06  - adjust to better handle blank nodes 
Rem    sdas        07/07/06  - add flags 
Rem    sdas        07/05/06  - add funcs for extracting components from lexval 
Rem    sdas        06/12/06  - add upgrade/downgrade routines to package spec 
Rem    sdas        06/07/06  - add syn_orig_value 
Rem    alwu        04/21/06  - refactor exchange_partition method 
Rem    alwu        04/06/06  - fix bug: 5146335 add temporary table name
Rem    nalexand    02/09/06  - bug#4926915; is_reified_quad moved to sdo_rdf
Rem    nalexand    02/10/06  - add gather_rdf_stats 
Rem    nalexand    01/31/06  - add get_model_name(); bug#4926894;
Rem    nalexand    10/12/05  - add tune_rdf_network_10r2_1() 
Rem    nalexand    10/12/05  - add tablespace to exchange_model_part$ 
Rem    nalexand    10/10/05  - check lock_model 
Rem    nalexand    10/06/05  - add package value$cache; add lock_model to start_batch$
Rem    nalexand    09/30/05  - no_insert_batch_load (for testing)
Rem    nalexand    09/17/05  - add start_batch() and exchange_model_part$() 
Rem    nalexand    09/16/05  - add parse_triple_batch_mode 
Rem    nalexand    05/25/05  - change parse_triple() call 
Rem    nalexand    05/18/05  - alter signature for create_rdf_model(); 
Rem    nalexand    05/12/05  - add is_reified_quad() 
Rem    nalexand    05/12/05  - remove default tablespace_name 
Rem    nalexand    05/06/05  - remove rdf_geturl() 
Rem    nalexand    05/04/05  - comment rdf_geturl() 
Rem    nalexand    05/02/05  - add delete_link$_id(); rename package sdo_rdf_internal; rename remove_rdf_network 
Rem    sravada     04/28/05  - type methods execute as the definer 
Rem    nalexand    04/13/05  - add parse_object_node() CLOB version; insert_sub_rdf_node$; insert_obj_rdf_node$ 
Rem    nalexand    03/21/05  - edit parse_property_value to output pl_type 
Rem    nalexand    03/16/05  - atonomous txn for inserting obj 
Rem    nalexand    03/15/05  - autonomous txns 
Rem    nalexand    03/02/05  - add get_value$_type$() 
Rem    nalexand    01/05/05  - get_literal() to return clob; get_literaltype() return varchar2; is_reif() 
Rem    nalexand    12/29/04  - edit add_namespaces() 
Rem    nalexand    12/13/04  - make geturl deterministic 
Rem    sravada     11/10/04 -  add create_rdf_model 
Rem    nalexand    09/27/04 - add m_id to is_reified; add is_triple() add get_triple_id() rdf_prefix
Rem    nalexand    09/22/04 - add is_reified()
Rem    nalexand    09/10/04 - add coll support TC_BAG etc.
Rem    nalexand    07/19/04 - add CLOB for OBJECTS
Rem    nalexand    07/07/04 - adding put_namespaces
Rem    nalexand    05/05/04 - get_literal 
Rem    nalexand    04/21/04 - Created
Rem

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

CREATE OR REPLACE PACKAGE sdo_rdf_internal  AS

  -- constants for network compression
  COMPRESS_FLAG CONSTANT VARCHAR2(8) := 'COMPRESS';
  -- ROW STORE COMPRESS BASIC
  COMPRESS_RSCB_FLAG     CONSTANT VARCHAR2(13)  := 'COMPRESS=RSCB';
  COMPRESS_RSCB_COMMAND  CONSTANT VARCHAR2(26)  := ' COMPRESS ';
  -- ROW STORE COMPRESS ADVANCED
  COMPRESS_RSCA_FLAG     CONSTANT VARCHAR2(13)  := 'COMPRESS=RSCA';
  COMPRESS_RSCA_COMMAND  CONSTANT VARCHAR2(29)  := ' COMPRESS FOR OLTP ';
  -- COLUMN STORE COMPRESS FOR QUERY HIGH
  COMPRESS_CSCQH_FLAG    CONSTANT VARCHAR2(14)  := 'COMPRESS=CSCQH';
  COMPRESS_CSCQH_COMMAND CONSTANT VARCHAR2(38)  := ' COMPRESS FOR QUERY HIGH ';
  -- COLUMN STORE COMPRESS FOR QUERY LOW
  COMPRESS_CSCQL_FLAG    CONSTANT VARCHAR2(14)  := 'COMPRESS=CSCQL';
  COMPRESS_CSCQL_COMMAND CONSTANT VARCHAR2(37)  := ' COMPRESS FOR QUERY LOW ';
  -- DEFAULT compression
  COMPRESS_DEFAULT_FLAG  CONSTANT VARCHAR2(512) := COMPRESS_RSCB_FLAG;

  -- constants for syntax related regular expression
  REGEXP_BNODE_SYNTAX    CONSTANT VARCHAR2(100) := '^(_:)[[:alpha:]_][[:alnum:]_-]*$';

  -- constants for rules index status values
  RIDX_VALID      CONSTANT VARCHAR2(5)  := 'VALID';
  RIDX_INCOMPLETE CONSTANT VARCHAR2(10) := 'INCOMPLETE';
  RIDX_INVALID    CONSTANT VARCHAR2(7)  := 'INVALID';
  RIDX_INPROGRESS CONSTANT VARCHAR2(10) := 'INPROGRESS';
  RIDX_NORIDX     CONSTANT VARCHAR2(6)  := 'NORIDX';
  RIDX_VERSIONED  CONSTANT VARCHAR2(10) := 'VERSIONED'; 

  -- constants for named graph-related flags
  FLAG_PROJ_ALL_COLUMNS  CONSTANT SIMPLE_INTEGER      := 1;
  FLAG_NG_ALL_UNNAMED    CONSTANT SIMPLE_INTEGER      := 32;
  FLAG_USE_ENT_UNNAMED   CONSTANT SIMPLE_INTEGER      := 64;

  -- constants for model types: ids and names
  MODEL_TYPE_ID_REGULAR   CONSTANT SIMPLE_INTEGER :=     1;
  MODEL_TYPE_ID_VIRTUAL   CONSTANT SIMPLE_INTEGER :=     2;
  MODEL_TYPE_ID_RDFCTX    CONSTANT SIMPLE_INTEGER :=     4;
  MODEL_TYPE_ID_RDB2RDF   CONSTANT SIMPLE_INTEGER :=     8;
  MODEL_TYPE_ID_VERSIONED CONSTANT SIMPLE_INTEGER :=     16;

  MODEL_TYPE_REGULAR   CONSTANT CHAR(1) :=     'M';
  MODEL_TYPE_VIRTUAL   CONSTANT CHAR(1) :=     'V';
  MODEL_TYPE_RDFCTX    CONSTANT CHAR(1) :=     'X';
  MODEL_TYPE_RDB2RDF   CONSTANT CHAR(1) :=     'D';
  MODEL_TYPE_VERSIONED CONSTANT CHAR(1) :=     'W';

  RDF$pv_M_G_SPTR  CONSTANT VARCHAR2(10) := ':'; -- Model/Graph name SeParaToR
  RDF$pv_MID_BITS  CONSTANT SIMPLE_INTEGER := 32; --4294967295; -- bits 0-31
  RDF$pv_GID_BITS  CONSTANT SIMPLE_INTEGER := 64; --79228162514264337589248983040; --bits 32-95


  DEFAULT_BATCHLOAD_TMP_TAB_NAME CONSTANT VARCHAR2(30) DEFAULT 'RDF_LINK$_TEMPBM$';

  DEFAULT_MODEL_ID CONSTANT NUMBER := 0;

  -- constants for data type indexes
  GEO_MDATA_COL         CONSTANT VARCHAR2(200) :=
      'mdsys.sdo_rdf.getv$geometryval(value_type,vname_prefix,vname_suffix,literal_type,language_type,long_value,';  
  GEO_MDATA_MCOL        CONSTANT VARCHAR2(4) := 'GEOM';
      
  -- record type to remember info for the current call (NOT for session)
  type callContextRecord_type is record (
    subpartitioning_type     VARCHAR2(30) -- from SYS.all_part_tables
  , def_subpartition_count   NUMBER       -- from SYS.all_part_tables
  , model_triple_cnt         NUMBER       -- via select count(*)
  , model_partition_cnt      NUMBER       -- from SYS.all_tab_subpartitions
  , model_partition_clause   VARCHAR2(4000)  -- for use in table creation
  , model_index_local_clause VARCHAR2(100)   -- LOCAL or not
  , TL_partition_type        VARCHAR2(30) -- REMEMBER after creating the RDF$TL table
  , TL_partition_clause      VARCHAR2(4000) -- REMEMBER partition_clause [ONLY IF TL_partitioning_type=MODEL_PARTITIONING]
  , enable_pdml_hint         VARCHAR2(100) -- query-scope PDML hint
  , proc_sig                 VARCHAR2(200) -- poc_sig for a BLFST
  , proc_sid                 VARCHAR2(30)  -- poc_sid for a BLFST
  , Bad_Rows_Tabname         VARCHAR2(30)
  , value_errors_cnt         NUMBER
  , bad_rows_cnt             NUMBER
  ); 

  PROCEDURE set_network_partition_info;
  PROCEDURE set_model_partition_info (modelID number);
  FUNCTION  get_model_pxn_clause RETURN VARCHAR2;
  FUNCTION  get_model_idx_clause RETURN VARCHAR2;

  -- given two sql templates, returns true or false to indicate they are matchable (by checking min-pfx and min-sfx)
  --FUNCTION matchableSqlTemplatePair(sqlTemplate1 VARCHAR2, sqlTemplate2 VARCHAR2, ctx_R2RFlags NUMBER) RETURN BOOLEAN;

  FUNCTION get_rules_index_pname(index_name IN VARCHAR2) RETURN VARCHAR2;

  procedure create_rdf_ddl_trigger;

  procedure create_rdf_triggers(model_name varchar2, tab_owner_name varchar2 default null);
  -- 
  -- TYPE_FAMILY: Given a type, returns type's "family": 'STRING', 'NUMERIC',
  -- 'DATE', 'TIME', 'DATETIME', or 'OTHER'.
  --
  FUNCTION TYPE_FAMILY(
      literal_type varchar2, flags varchar2 default null)
    return varchar2 deterministic;
  pragma restrict_references (type_family, WNDS, RNDS, WNPS, RNPS);

  -- value replacement
  PROCEDURE FIND_VALUES_TO_REPLACE (
    valueMapTab_owner        varchar2
  , valueMapTab_name         varchar2
  , esc_reserved_chars       boolean default false
  , options                  varchar2 default NULL
  );

  PROCEDURE REPLACE_VALUES (
    valueMapTab_owner        varchar2
  , valueMapTab_name         varchar2
  , options                  varchar2 default NULL
  );

  -- exposed for testing collision handling
  PROCEDURE LOAD_BATCH_VALUES_TABLE (
    Batch_Values_Tab       IN  varchar2
  , tbs_name               IN  varchar2
  , Staging_Tab            IN  varchar2
  , modelID                IN  number
  , Event_Trace_Tab        IN  varchar2
  , flags                  IN  varchar2
  , owner                  IN  varchar2 default 'MDSYS'
  , Bad_Rows_Tab           IN  dbms_id default NULL
  );

  PROCEDURE MERGE_BATCH_VALUES (
    Batch_Values_Tab           IN  varchar2
  , modelID                    IN  number
  , owner                      IN  varchar2 default 'MDSYS'
  , collision_cnt              IN  number default 0
  , Event_Trace_Tabname        IN  varchar2 default NULL
  , flags                      IN  varchar2 default NULL
  );

  PROCEDURE REMOVE_IM_VIRTUAL_COLUMNS;

  -- functions to extract parts from lex_value stored in staging table
  FUNCTION pov_value_name (ov varchar2) RETURN varchar2 DETERMINISTIC;
  pragma restrict_references (pov_value_name,WNDS,RNDS,WNPS,RNPS);
  FUNCTION pov_value_type (ov varchar2) RETURN varchar2 DETERMINISTIC;
  pragma restrict_references (pov_value_type,WNDS,RNDS,WNPS,RNPS);
  FUNCTION pov_literal_type (ov varchar2) RETURN varchar2 DETERMINISTIC;
  pragma restrict_references (pov_literal_type,WNDS,RNDS,WNPS,RNPS);
  FUNCTION pov_language_type (ov varchar2) RETURN varchar2 DETERMINISTIC;
  pragma restrict_references (pov_language_type,WNDS,RNDS,WNPS,RNPS);

  -- functions exposed here just for testing: not for general use
  FUNCTION validate_user_options (flags VARCHAR2) 
  RETURN NUMBER deterministic;

  function check_user_option (flags varchar2, item varchar2) 
  return boolean deterministic;

  function get_user_option_choice (flags varchar2, item varchar2) 
  return varchar2 deterministic;

  -- check for validity of decimal (or integer, if flags contains INTEGER): returns NULL if valid
  FUNCTION chk_numeric (val varchar2, ltype varchar2, flags varchar2 default null) return varchar2 deterministic parallel_enable;
           pragma restrict_references (chk_numeric,WNDS,RNDS,WNPS,RNPS);

  -- function to obtain canonical value for a lex value (NULL if identical)
  function get_canon_val_null (lexval varchar2, flags varchar2 default null) return varchar2 deterministic parallel_enable;
  pragma restrict_references (get_canon_val_null,WNDS,RNDS,WNPS,RNPS);

  -- function to obtain canonical entry for a lex value (used by user-defined inference rules logic)
  function get_canon_term (
    lexval     varchar2
  , model_id   number
  , pos        varchar2
  , model_name varchar2 default null
  , flags      varchar2 default null) 
  return sdo_rdf_term deterministic parallel_enable;

  -- convenience method
  function get_canon_id (
    lexval     varchar2
  , model_id   number
  , pos        varchar2
  , model_name varchar2 default null
  , flags      varchar2 default null) 
  return number deterministic parallel_enable;

  -- function to validate/convert user-supplied names for owner,table,col,tbs..
  FUNCTION validate_and_convert_name (name VARCHAR2) 
  RETURN VARCHAR2 DETERMINISTIC;

  -- function to validate/convert user-supplied names for model, vm, rb, ridx
  FUNCTION val_cvt_rdf_name (name VARCHAR2) 
  RETURN VARCHAR2 DETERMINISTIC;

  -- function to convert numeric pos code (0..7) to list of sub/pred/obj
  FUNCTION get_pos_list_from_code (pos_code NUMBER) 
    RETURN varchar2 deterministic parallel_enable;

  -- procedure to update collision summary
  PROCEDURE UPDATE_COLLISION_SUMMARY;
  PROCEDURE CHECK_CLEAR_COLLISION_SUMMARY (options varchar2 default null);

  -- decodes model-graph: returns model and graph name
  FUNCTION decode_model_name (
    model_name           VARCHAR2
  , graph            OUT VARCHAR2
  ) RETURN               VARCHAR2 deterministic;

  -- main routine for batch load from staging table
  PROCEDURE BULK_LOAD_FROM_STAGING_TABLE (
    model               IN            varchar2,
    staging_table_owner IN            varchar2, 
    staging_table_name  IN            varchar2,
    user_name           IN            varchar2,
    flags               IN            varchar2 default NULL,
    debug               IN            PLS_INTEGER default NULL,
    start_comment       IN            varchar2 default NULL,
    end_comment         IN            varchar2 default NULL,
    roles_and_privs     IN            varchar2 default ' MDSYS.RDF_PRIV$:READ '
  );

  PROCEDURE RESUME_LOAD_FROM_STAGING_TABLE (
    model               IN              varchar2,
    staging_table_owner IN              varchar2,
    staging_table_name  IN              varchar2,
    session_id          IN              varchar2,
    user_name           IN              varchar2,
    flags               IN              varchar2 default NULL,
    start_comment       IN              varchar2 default NULL,
    end_comment         IN              varchar2 default NULL
  );

  -- invalidates cursors with unresolved values
  PROCEDURE refresh_query_state;

  FUNCTION check_lexval_for_validity(
    lexval  varchar2
  , min_pos PLS_INTEGER
  , options varchar2 default NULL
  ) RETURN  varchar2 deterministic parallel_enable;
  pragma restrict_references (check_lexval_for_validity,WNDS,RNDS,WNPS,RNPS);

  FUNCTION chklex(
    lexval  varchar2
  ) RETURN  NUMBER deterministic parallel_enable;
  pragma restrict_references (chklex,WNDS,RNDS,WNPS,RNPS);

  FUNCTION esclex (
    lexval varchar2 CHARACTER SET ANY_CS
  , esc_reserved_chars_bit pls_integer default 0
  , options varchar2 default null
  ) RETURN varchar2 CHARACTER SET lexval%CHARSET deterministic parallel_enable;
  --pragma restrict_references (esclex,WNDS,RNDS,WNPS,RNPS);

  -- replace prefix at beginning with expanded form
  FUNCTION replace_rdf_prefix (
    string                       VARCHAR2
  , options                      VARCHAR2 default NULL
  ) RETURN                       VARCHAR2 deterministic;
  pragma restrict_references (replace_rdf_prefix,WNDS,RNDS,WNPS,RNPS);

  PROCEDURE CREATE_PARALLEL_HINTS (
    flags             VARCHAR2
  , dop           OUT PLS_INTEGER -- NULL=>non-parallel,0=>default,otherwise n
  , par_hint1     OUT VARCHAR2
  , par_hint2     OUT VARCHAR2
  , par_hint3     OUT VARCHAR2
  , table_name1       VARCHAR2 default NULL
  , table_name2       VARCHAR2 default NULL
  , table_name3       VARCHAR2 default NULL
  , skip_parallel     VARCHAR2 default NULL
  ) deterministic parallel_enable;

  PROCEDURE get_geo_mindex_info(
    spa_m_idx_exists  OUT BOOLEAN
  , srid              OUT NUMBER
  );

  FUNCTION get_object_node_type (object CLOB) RETURN VARCHAR2 deterministic;
  FUNCTION get_literal (object IN CLOB) RETURN CLOB deterministic;
  FUNCTION get_literaltype (object IN CLOB) RETURN VARCHAR2 deterministic;

  FUNCTION get_model_id (
    model_name       IN  VARCHAR2
  , flags            IN  VARCHAR2 default NULL
  ) RETURN               NUMBER;

  FUNCTION get_model_name (
    model_id         IN  NUMBER
  , flags            IN  VARCHAR2 default NULL
  ) RETURN               VARCHAR2;

  PROCEDURE GET_USER_SPEC_BATCH_VALUES_TAB (
    flags              IN  varchar2
  , table_name         OUT varchar2
  , owner_name         OUT varchar2
  );

  -- given model id, return tablespace name
  FUNCTION GET_TABLESPACE_NAME( modelID IN number DEFAULT DEFAULT_MODEL_ID ) RETURN VARCHAR2 DETERMINISTIC;

  -- given model name, return owner, model Id, app table name and col name
  PROCEDURE GET_MODEL_INFO (
    model_owner OUT varchar2
  , model_name  IN  varchar2
  , modelID     OUT number
  , App_Tabname OUT varchar2
  , App_Colname OUT varchar2
  , flags       IN  varchar2 default NULL
  );

  FUNCTION is_triple (
    model_id             NUMBER
  , subject              VARCHAR2
  , property             VARCHAR2
  , object               VARCHAR2
  , model_name           VARCHAR2 default NULL
  ) RETURN               VARCHAR2;

  FUNCTION is_triple (
    model_id             NUMBER
  , subject              VARCHAR2
  , property             VARCHAR2
  , object               CLOB
  , model_name           VARCHAR2 default NULL
  ) RETURN               VARCHAR2;



  FUNCTION is_reified (
    model_id           NUMBER
  , rdf_t_id           VARCHAR2
  ) RETURN             VARCHAR2;

  FUNCTION is_reified (
    model_name         VARCHAR2
  , rdf_t_id           VARCHAR2
  ) RETURN             VARCHAR2;

  FUNCTION is_reified (
    model_id           NUMBER
  , subject            VARCHAR2
  , property           VARCHAR2
  , object             VARCHAR2
  ) RETURN             VARCHAR2;

  FUNCTION is_reified (
    model_name         VARCHAR2
  , subject            VARCHAR2
  , property           VARCHAR2
  , object             VARCHAR2
  ) RETURN             VARCHAR2;

  FUNCTION get_triple_cost (
    model_id         IN  NUMBER
  , sub_id           IN  NUMBER
  , pred_id          IN  NUMBER
  , canon_id         IN  NUMBER
  ) RETURN               NUMBER;

  PROCEDURE set_triple_cost(
    model_id         IN  NUMBER
  , sub_id           IN  NUMBER
  , pred_id          IN  NUMBER
  , canon_id         IN  NUMBER
  );

  PROCEDURE delete_link$_id (
    model_id         IN  NUMBER
  , sub_id           IN  NUMBER
  , pred_id          IN  NUMBER
  , canon_id         IN  NUMBER
  );

  
  PROCEDURE decr_link_cost_del_if_zeroed (
    model_id         IN  NUMBER
  , sub_id           IN  NUMBER
  , pred_id          IN  NUMBER
  , canon_id         IN  NUMBER
  , label_num        IN  NUMBER DEFAULT NULL
  , res_level_ols    IN  BOOLEAN DEFAULT FALSE
  );

  PROCEDURE parse_subject_node (
    v_subject        IN  VARCHAR2
  , sv_type          IN  VARCHAR2
  , sv_id            OUT NUMBER
  , new_sv           OUT BOOLEAN
  );

  PROCEDURE parse_property_value (
    v_property       IN  VARCHAR2
  , pv_type          IN  VARCHAR2
  , pv_id            OUT NUMBER
  , new_pv           OUT BOOLEAN
  , flags            IN  VARCHAR2 DEFAULT NULL
  );

  PROCEDURE parse_object_node (
    v_object         IN  VARCHAR2
  , lit_type         IN  VARCHAR2
  , lit_lang         IN  VARCHAR2
  , ov_type          IN  VARCHAR2
  , ov_id            OUT NUMBER
  , cov_id           OUT NUMBER
  , new_ov           OUT BOOLEAN 
  );

  PROCEDURE parse_object_node (
    v_object         IN  CLOB
  , lit_type         IN  VARCHAR2
  , lit_lang         IN  VARCHAR2
  , ov_type          IN  VARCHAR2
  , ov_id            OUT NUMBER
  , cov_id           OUT NUMBER
  , new_ov           OUT BOOLEAN 
  );

  -- used in before row insert/update trigger on app-table (triple col)
  PROCEDURE parse_triple (
    m_id             IN  NUMBER
  , pv_id            IN  NUMBER
  , sv_id            IN  NUMBER
  , ov_id            IN  NUMBER
  , cov_id           IN  NUMBER
  , new_sv           IN  BOOLEAN
  , new_ov           IN  BOOLEAN
  , new_pv           IN  BOOLEAN
  , pl_id            OUT NUMBER
  , label_num        IN  NUMBER DEFAULT NULL
  , triple_level_ols IN  BOOLEAN DEFAULT FALSE
  );

  PROCEDURE insert_triple (
    m_id             IN  NUMBER
  , subject          IN  VARCHAR2
  , property         IN  VARCHAR2
  , object           IN  VARCHAR2
  , pl_id            OUT NUMBER
  , sv_id            OUT NUMBER
  , pv_id            OUT NUMBER
  , ov_id            OUT NUMBER
  , batch_mode       IN  BOOLEAN -- true => old batch mode insert(from NTriple)
  , reuse_mode       IN  BOOLEAN -- true => reuse blank nodes from same model
  , m_name           IN  VARCHAR2 default NULL -- (chg to REQUIRED param) model name optionally including graph name
  , nonauto          IN  BOOLEAN  default FALSE -- true => use non-autonomous value creation
  );

  PROCEDURE insert_triple (
    m_id             IN  NUMBER
  , subject          IN  VARCHAR2
  , property         IN  VARCHAR2
  , object           IN  CLOB -- CLOB version
  , pl_id            OUT NUMBER
  , sv_id            OUT NUMBER
  , pv_id            OUT NUMBER
  , ov_id            OUT NUMBER
  , batch_mode       IN  BOOLEAN -- true => old batch mode insert(from NTriple)
  , reuse_mode       IN  BOOLEAN -- true => reuse blank nodes from same model
  , m_name           IN  VARCHAR2 default NULL -- (chg to REQUIRED param) model name optionally including graph name
  , nonauto          IN  BOOLEAN  default FALSE -- true => use non-autonomous value creation
  );

  PROCEDURE start_batch$ (
    roles_and_privs       IN  VARCHAR2
  , current_user_name     IN  VARCHAR2
  , tempTblName           IN  VARCHAR2
  , model_id              IN  NUMBER
  , model_name            IN  VARCHAR2
  , rdf_tablespace        IN  VARCHAR2
  );

  PROCEDURE start_batch$ (
    roles_and_privs       IN  VARCHAR2
  , current_user_name     IN  VARCHAR2
  , tempTblName           IN  VARCHAR2
  , model_id              IN  NUMBER
  , model_name            IN  VARCHAR2
  , rdf_tablespace        IN  VARCHAR2
  , exchange              IN  NUMBER DEFAULT NULL
  );

  PROCEDURE start_batch$ (
    roles_and_privs       IN  VARCHAR2
  , current_user_name     IN  VARCHAR2
  , model_id              IN  NUMBER
  , model_name            IN  VARCHAR2
  , rdf_tablespace        IN  VARCHAR2
  );

  PROCEDURE start_batch$ (
    roles_and_privs       IN  VARCHAR2
  , current_user_name     IN  VARCHAR2
  , model_id              IN  NUMBER
  , model_name            IN  VARCHAR2
  , rdf_tablespace        IN  VARCHAR2
  , exchange              IN  NUMBER
  );

  -- used in before row insert/update trigger on app-table (triple col)
  PROCEDURE parse_triple_batch_mode (
    m_id             IN  NUMBER
  , pv_id            IN  NUMBER
  , sv_id            IN  NUMBER
  , ov_id            IN  NUMBER
  , cov_id           IN  NUMBER
  , new_sv           IN  BOOLEAN
  , new_ov           IN  BOOLEAN
  , new_pv           IN  BOOLEAN
  , pl_id            OUT NUMBER 
  );
        
  PROCEDURE exchange_model_part$ (
    roles_and_privs       IN  VARCHAR2
  , current_user_name     IN  VARCHAR2
  , model_id       IN  NUMBER
  , rdf_tablespace IN  VARCHAR2
  );

  function get_value$_type$_func (
    model_id    NUMBER
  , lexval      VARCHAR2 
  , pos         VARCHAR2 -- 'SUBJECT', 'PREDICATE', or 'OBJECT'
  , model_name  VARCHAR2 default NULL
  ) return sdo_rdf_term deterministic parallel_enable;

  PROCEDURE get_value$_type$ (
    model_id      IN     NUMBER
  , subject       IN OUT VARCHAR2
  , property      IN OUT VARCHAR2
  , object        IN OUT VARCHAR2
  , sv_type       OUT    VARCHAR2
  , pv_type       OUT    VARCHAR2
  , ov_type       OUT    VARCHAR2
  , lit_type      OUT    VARCHAR2
  , lit_lang      OUT    VARCHAR2
  , model_name    IN     VARCHAR2 default NULL -- model name opt w/ graph name
  );

  PROCEDURE get_value$_type$ (
    model_id      IN     NUMBER
  , subject       IN OUT VARCHAR2
  , property      IN OUT VARCHAR2
  , object        IN OUT CLOB
  , sv_type          OUT VARCHAR2
  , pv_type          OUT VARCHAR2
  , ov_type          OUT VARCHAR2
  , lit_type         OUT VARCHAR2
  , lit_lang         OUT VARCHAR2
  , model_name    IN     VARCHAR2 default NULL -- model name opt w/ graph name
  );

  PROCEDURE refresh_sem_tablespace_names (
    model_name                 VARCHAR2 default NULL  -- NULL => all
  , user_id                    NUMBER default NULL    -- NULL => DBA
  );

  PROCEDURE create_rdf_model (
    model_name       IN  VARCHAR2
  , table_name       IN  VARCHAR2
  , column_name      IN  VARCHAR2
  , user_name        IN  VARCHAR2
  , model_tablespace IN  VARCHAR2 default NULL
  , tab_owner_name   IN  VARCHAR2 default NULL
  , model_type_id    IN  NUMBER   default sdo_rdf_internal.MODEL_TYPE_ID_REGULAR
  , options          IN  VARCHAR2 default NULL
  );

  PROCEDURE drop_rdf_model (model_name IN VARCHAR2, user_name IN VARCHAR2,
                            tab_owner_name IN VARCHAR2 default NULL);

  PROCEDURE create_rdf_model_views (
    model_name       IN  VARCHAR2
  , model_id         IN  NUMBER
  , model_type       IN  VARCHAR2
  , semmToo          IN  BOOLEAN
  , recreate         IN  BOOLEAN
  , user_name        IN  VARCHAR2
  , options          IN  VARCHAR2 default NULL
  );

  FUNCTION GetVal(i_id NUMBER)
         RETURN VARCHAR2 DETERMINISTIC;

  FUNCTION GetPref(i_id NUMBER)
         RETURN VARCHAR2 DETERMINISTIC;

  FUNCTION GetSuff(i_id NUMBER)
         RETURN VARCHAR2 DETERMINISTIC;

  FUNCTION GetValTyp(i_id NUMBER)
         RETURN VARCHAR2 DETERMINISTIC;

  FUNCTION GetOrdTyp(i_id NUMBER)
         RETURN NUMBER DETERMINISTIC;

  FUNCTION GetOrdNum(i_id NUMBER)
         RETURN NUMBER DETERMINISTIC;

  FUNCTION GetOrdDate(i_id NUMBER)
         RETURN TIMESTAMP WITH TIME ZONE DETERMINISTIC;

  FUNCTION GetLitType(i_id NUMBER)
         RETURN VARCHAR2 DETERMINISTIC;

  FUNCTION GetLangType(i_id NUMBER)
         RETURN VARCHAR2 DETERMINISTIC;

 /* FUNCTION GetRDFTerm(i_id NUMBER)
         RETURN VARCHAR2 DETERMINISTIC;*/

-- handle in-memory population 
  PROCEDURE adjust_imvc_partition;

  /**
   * Note only owner of models and rules index (or sys dba) can 
   * create a virtual model.
   */
  PROCEDURE create_virtual_model (
    vm_name          IN  VARCHAR2
  , user_name        IN  VARCHAR2
  , roles_and_privs  IN  VARCHAR2
  , models           IN  MDSYS.RDF_Models default NULL
  , rulebases        IN  MDSYS.RDF_Rulebases default NULL
  , options          IN  VARCHAR2 default NULL
  , entailments      IN  MDSYS.RDF_Entailments default NULL
  );

  /**
   * Creates the duplicates view for a given virtual model 
   */
  PROCEDURE create_virtual_model_v_view (
    vm_name        IN VARCHAR2
  , pIDs           IN SYS.ODCINumberList
  , recreate       IN BOOLEAN
  , inmemory       IN BOOLEAN
  , options        IN VARCHAR2 default NULL
  );

  /**
   * Creates the unique view for a given virtual model 
   */
  PROCEDURE create_virtual_model_u_view (
    vm_name        IN VARCHAR2
  , pIDs           IN SYS.ODCINumberList
  , recreate       IN BOOLEAN
  , inmemory       IN BOOLEAN
  );

  /**
   * Note only owner of virtual model (or sys dba) can 
   * drop the virtual model.
   */
  PROCEDURE drop_virtual_model (vm_name IN VARCHAR2, user_name IN VARCHAR2, roles_and_privs VARCHAR2);

  PROCEDURE truncate_rdfview_model(
    model_id      NUMBER,
    keep_r2rtab   BOOLEAN,
    truncate_model BOOLEAN default true
  );

  -- combines and replaces all the info in rows for a Tmap-G-refPred-PaTmap into a single row
  PROCEDURE replace_ref_prop_rows_with_agg(
    R2R_Tab_Name varchar2
  , options varchar2 default NULL
  );

  -- For a given Tmap, adds DB col info to RR tab rows with column-valued Omaps
  PROCEDURE add_DBColInfo_for_Tmap(
    model_id                  number
  , R2R_Tab_Name              varchar2
  , ltab_tabName              varchar2
  , ltab_Tmap                 varchar2
  , col_cnt                   number
  , desc_tbl                  dbms_sql.desc_tab3
  , Tmap_idx                  number
  , user_name                 varchar2
  , subj_template_prefix      varchar2
  , options                   varchar2 default NULL
  );

  PROCEDURE create_rdfview_model (
    model_name          IN  VARCHAR2
  , user_name           IN  VARCHAR2
  , map_type            OUT VARCHAR2
  , model_id            OUT NUMBER
  , schgraph_id         OUT NUMBER
  , R2R_Tab_Name        OUT VARCHAR2
  , gen_r2rml_tab_name  OUT VARCHAR2
  , gen_schema_tab_name OUT VARCHAR2
  , tables              IN  SYS.ODCIVarchar2List
  , prefix              IN  VARCHAR2 default NULL
  , r2rml_table_owner   IN  VARCHAR2 default NULL
  , r2rml_table_name    IN  VARCHAR2 default NULL
  , schema_table_owner  IN  VARCHAR2 default NULL
  , schema_table_name   IN  VARCHAR2 default NULL
  , options             IN  VARCHAR2 default NULL
  , r2rml_string        IN  CLOB CHARACTER SET ANY_CS default NULL
  , r2rml_string_fmt    IN  VARCHAR2 default NULL
  );

  -- loads RDFView schema from a given staging table into the (shallow) model for the RDFView
  PROCEDURE load_rdfview_schema (
    model_name           varchar2
  , map_type             varchar2
  , model_id             number
  , schgraph_id          number
  , R2R_Tab_Name         varchar2
  , gen_schema_tab_name  varchar2
  , schema_table_owner   varchar2
  , schema_table_name    varchar2
  , options              varchar2 default NULL
  );

  PROCEDURE drop_rdfview_model (model_name IN VARCHAR2, user_name IN VARCHAR2,
                                options IN VARCHAR2 default NULL);

  PROCEDURE drop_extended_stats;

  PROCEDURE gather_stats (just_on_values_table in boolean  default false,  
                                        degree in number   default DBMS_STATS.AUTO_DEGREE,
                              estimate_percent in number   default DBMS_STATS.AUTO_SAMPLE_SIZE, 
                              value_method_opt in varchar2 default null,
                               link_method_opt in varchar2 default null);

  PROCEDURE gather_rdf_stats;

  /**
   * Note only the owner of the model (or sys dba) is allowed
   * to gather statistics for the model.
   */
  PROCEDURE gather_model_stats (
    model_name     IN VARCHAR2
  , user_name      IN VARCHAR2
  , options        IN VARCHAR2 default NULL
  );
  /**
   * Note only the owner of the model (or sys dba) is allowed
   * to drop statistics for the model.
   */
  PROCEDURE drop_model_stats (
    model_name     IN VARCHAR2
  , user_name      IN VARCHAR2
  );

  PROCEDURE populate_crs_table;

  /**
   * Network compression-related methods
   */
  FUNCTION get_network_compression RETURN VARCHAR2;
  PROCEDURE set_network_compression (compress_val IN VARCHAR2);
  PROCEDURE clear_network_compression;
  FUNCTION extract_compress_option (options_str IN VARCHAR2) RETURN VARCHAR2;
  FUNCTION get_link_compress_cmd (compress_flag IN VARCHAR2) RETURN VARCHAR2;
  FUNCTION get_value_compress_cmd (compress_flag IN VARCHAR2) RETURN VARCHAR2;

  /**
   * NETWORK STATUS related methods
   */
  /***************************************************************************/
  /* clear_network_status                                                    */
  /***************************************************************************/
  PROCEDURE clear_network_status(options varchar2 default NULL);

  PROCEDURE create_rdf_network (
    user_name       in varchar2
  , tablespace_name in varchar2
  , roles_and_privs in varchar2
  , options         in varchar2 default null
  );

  PROCEDURE drop_rdf_network (
    user_name varchar2
  , roles_and_privs varchar2
  , cascade in boolean default false
  );
  PROCEDURE migrate_data_to_current (user_name in VARCHAR2, options in VARCHAR2 default NULL);
 
 PROCEDURE alter_rdf_indexes (
    attr_name IN varchar2
  , new_val   IN varchar2
  , options   IN varchar2 default null
  , roles_and_privs varchar2
  );

  PROCEDURE enable_inmemory (populate_wait in BOOLEAN, roles_and_privs varchar2);
  PROCEDURE disable_inmemory (roles_and_privs varchar2);

  /**
   * Note only rules index owner is allowed perform this action.Not all 
   * parameters of dbms_stats.gather_table_stats makes sense here.
   */
  PROCEDURE analyze_rules_index(index_name IN VARCHAR2,
                          estimate_percent IN NUMBER,
                          method_opt       IN VARCHAR2,
                          degree           IN NUMBER,
                          cascade          IN BOOLEAN,
                          no_invalidate    IN BOOLEAN,
                          force            IN BOOLEAN DEFAULT FALSE
                         );

  /**
   * Note only rules index owner is allowed perform this action.Not all 
   * parameters of dbms_stats.gather_table_stats makes sense here.
   */
  PROCEDURE analyze_model(model_name       IN VARCHAR2,
                          estimate_percent IN NUMBER,
                          method_opt       IN VARCHAR2,
                          degree           IN NUMBER,
                          cascade          IN BOOLEAN,
                          no_invalidate    IN BOOLEAN,
                          force            IN BOOLEAN DEFAULT FALSE
                         );

  /**
   * Note only model owner (or sys dba) is allowed perform this action. Not all 
   * parameters of dbms_stats.delete_table_stats makes sense here.
   */
  PROCEDURE delete_model_stats(
      model_name       IN VARCHAR2,
      cascade_parts    IN BOOLEAN  DEFAULT TRUE, 
      cascade_columns  IN BOOLEAN  DEFAULT TRUE,
      cascade_indexes  IN BOOLEAN  DEFAULT TRUE,
      no_invalidate    IN BOOLEAN  DEFAULT DBMS_STATS.AUTO_INVALIDATE,
      force            IN BOOLEAN  DEFAULT FALSE
     );


  /**
   * Note only model owner (or sys dba) is allowed perform this action. Not all 
   * parameters of dbms_stats.delete_table_stats makes sense here.
   */
  PROCEDURE delete_rules_index_stats(
      index_name       IN VARCHAR2,
      cascade_parts    IN BOOLEAN  DEFAULT TRUE, 
      cascade_columns  IN BOOLEAN  DEFAULT TRUE,
      cascade_indexes  IN BOOLEAN  DEFAULT TRUE,
      no_invalidate    IN BOOLEAN  DEFAULT DBMS_STATS.AUTO_INVALIDATE,
      force            IN BOOLEAN  DEFAULT FALSE
     );


  /**
   * This method will swap the names of two models.
   * 
   * The input to this method are two model names. This method requires that the
   * current session user is the owner of both models.
   */
  PROCEDURE swap_model_names(m1  in VARCHAR2,
                             m2  in VARCHAR2);

  PROCEDURE rename_model(old_name  in VARCHAR2,
                         new_name  in VARCHAR2, user_id NUMBER);

  PROCEDURE rename_entailment(old_name  in VARCHAR2,
                              new_name  in VARCHAR2, user_name VARCHAR2);

  FUNCTION decode_index_code (
    idx_code VARCHAR2
  , flags    VARCHAR2 default NULL
  )
  RETURN VARCHAR2 DETERMINISTIC;

  PROCEDURE add_rdf_index (
    index_code      IN  VARCHAR
  , table_name      IN  VARCHAR2 default NULL
  , index_name_pfx  IN  VARCHAR2 default NULL
  , index_name_sfx  IN  VARCHAR2 default NULL
  , status          IN  VARCHAR2 default NULL
  , parallel        IN  PLS_INTEGER default NULL
  , online          IN  BOOLEAN default FALSE
  , tablespace_name IN  VARCHAR2 default NULL
  , compression_length IN  PLS_INTEGER default NULL
  , flags           IN  VARCHAR2 default NULL
  );

  PROCEDURE drop_rdf_index (
    index_code      IN   VARCHAR2
  , index_name_pfx  IN  VARCHAR2 default NULL
  , index_name_sfx  IN  VARCHAR2 default NULL
  );

  PROCEDURE add_datatype_index(
    datatype            IN VARCHAR2
  , user_name           IN VARCHAR2
  , tablespace_name     IN VARCHAR2 default NULL
  , parallel            IN PLS_INTEGER default NULL
  , online              IN BOOLEAN default FALSE
  , options             IN VARCHAR2 default NULL
  );

  PROCEDURE drop_datatype_index(
    datatype            IN VARCHAR2
  , force_drop          IN BOOLEAN default FALSE
  );

  PROCEDURE alter_datatype_index(
    datatype            IN VARCHAR2
  , command             IN VARCHAR2
  , tablespace_name     IN VARCHAR2 default NULL
  , parallel            IN PLS_INTEGER default NULL
  , online              IN BOOLEAN default FALSE
  );

  PROCEDURE ddl_same_rdf_indexes (
    table_name           IN  VARCHAR2
  , modelID              IN  NUMBER
  , index_name_pfx       IN  VARCHAR2
  , index_name_sfx       IN  VARCHAR2
  , Event_Trace_Tabname  IN  VARCHAR2 default NULL
  , parallel             IN  PLS_INTEGER default NULL
  , online               IN  BOOLEAN default FALSE
  , status               IN  VARCHAR2 default NULL
  , operation            IN  VARCHAR2 default 'CREATE'
  , tablespace_name      IN  VARCHAR2 default NULL
  );

  PROCEDURE alter_index_on_rdf_graph (
    modelID          IN  NUMBER
  , index_code       IN  VARCHAR2
  , command          IN  VARCHAR2
  , parallel         IN  PLS_INTEGER default NULL
  , online           IN  BOOLEAN default FALSE
  , tablespace_name  IN  VARCHAR2 default NULL
  , rules_index_name IN  VARCHAR2 default NULL
  , use_compression  IN  BOOLEAN default NULL
  );

  PROCEDURE refresh_sem_network_index_info (
    model_id_list sys.ODCINumberList
  , roles_and_privs VARCHAR2
  , options       VARCHAR2 default NULL
  );

  PROCEDURE alter_rdf_graph (
    modelID          IN  NUMBER
  , command          IN  VARCHAR2
  , user_name        IN  VARCHAR2
  , tablespace_name  IN  VARCHAR2 default NULL
  , parallel         IN  PLS_INTEGER default NULL
  , rules_index_name IN  VARCHAR2 default NULL
  );

  PROCEDURE recreate_link_views(options  IN  VARCHAR2 default NULL);

  PROCEDURE recreate_rulebase_views (
    user_name IN VARCHAR2
  );

  PROCEDURE recreate_stats_partitions;

  PROCEDURE recreate_app_triggers;

  PROCEDURE recreate_meta_views (
    options  IN VARCHAR2 default NULL
  );

  PROCEDURE grant_pdb_dba_privs;

  PROCEDURE convert_old_rdf_data (
    log_level       IN PLS_INTEGER default 10
  , migrate         IN BOOLEAN     default TRUE
  , flags           IN VARCHAR2    default NULL
  , tablespace_name IN VARCHAR2    default NULL
  );

  PROCEDURE clear_net_data(user_name varchar2);

  FUNCTION encode_into_index_code (index_name VARCHAR2) 
  RETURN VARCHAR2 DETERMINISTIC;

  PROCEDURE get_rdf_index_info (
    user_name IN VARCHAR2
  , flags     IN VARCHAR2 default NULL
  );

  FUNCTION uer2r (
    typ          varchar2
  , val          varchar2 CHARACTER SET ANY_CS
  , termType  IN varchar2
  , prefix    IN varchar2 CHARACTER SET ANY_CS default NULL
  , options   IN varchar2 default NULL
  ) return varchar2 CHARACTER SET val%CHARSET deterministic;
  --pragma restrict_references (uer2r,WNDS,RNDS,WNPS,RNPS);

  FUNCTION get_base_prefix_from_RR_table (col_val varchar2) RETURN varchar2 deterministic;
  pragma restrict_references (get_base_prefix_from_RR_table,WNDS,RNDS,WNPS,RNPS);

  FUNCTION get_col_name_from_RR_table (col_val varchar2) RETURN varchar2 deterministic;
  pragma restrict_references (get_col_name_from_RR_table,WNDS,RNDS,WNPS,RNPS);

  --
  -- A Private DEFINER right procedure that returns the partition name given
  -- a model name.
  --
  FUNCTION get_model_pname(model_name IN VARCHAR2) RETURN VARCHAR2;

  --=================== SEQUENCE adjustment related routines  =================--  
  PROCEDURE adj_sequence_currval (seq_obj_name dbms_id, old_val number, new_val number);
  FUNCTION tgt_rdf_model_id_sq_nextval (owner_name dbms_id) RETURN number;
  FUNCTION tgt_rdf_rulebase_id_sq_nextval (owner_name dbms_id) RETURN number;
  FUNCTION tgt_rdf_hist_id_sq_nextval (owner_name dbms_id) RETURN number;
  FUNCTION tgt_rdf_long_lit_id_sq_nextval (owner_name dbms_id) RETURN number;

  --=================== EXPORT / IMPORT Procedures =================--
  -- Logic relocated from sdo_rdf_exp_imp to get around authid issues.
  -- Caller of sdo_rdf_exp_imp (invokers right) is not necessarily SYS, 
  -- so MDSYS tables may be invisible to export/import user.
  --
  PROCEDURE system_callout (
    prepost        IN    PLS_INTEGER,
    version        IN    VARCHAR2
  );

  --********************************************************--
  -- Called for each registered instance during export
  -- Return action='EXPORT' for 12.1 target
  -- Need to skip or return pre-created Views for 
  -- older targets for downgrade to work properly
  PROCEDURE instance_export_action (
          obj_name      IN   VARCHAR2,
          obj_schema    IN   VARCHAR2,
          obj_type      IN   NUMBER,
          tgt_version   IN   VARCHAR2,
          action        OUT  VARCHAR2,
          alt_name      OUT  VARCHAR2,
          where_clause  OUT  VARCHAR2
  );

  --*******************************************************--
  -- Called for each registered instance during import
  PROCEDURE instance_callout_imp (
             obj_name   IN   VARCHAR2,
             obj_schema IN   VARCHAR2,
             obj_type   IN   NUMBER,
             prepost    IN   PLS_INTEGER,
             action     OUT  VARCHAR2,
             alt_name   OUT  VARCHAR2
  );

  --******************************************************--
  -- Can do all fix up processing here when prepost=1
  PROCEDURE system_callout_imp (
             user_name  IN   VARCHAR2,
             prepost    IN   PLS_INTEGER
  );
  --================ End EXPORT / IMPORT Procedures ================--

END sdo_rdf_internal;
/
SHOW ERRORS;



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


OHA YOOOO