MINI MINI MANI MO

Path : /proc/self/root/opt/oracle/product/18c/dbhomeXE/md/admin/
File Upload :
Current File : //proc/self/root/opt/oracle/product/18c/dbhomeXE/md/admin/sdosemutlh.sql

Rem
Rem $Header: sdo/admin/sdosemutlh.sql /main/46 2017/03/30 08:19:32 alwu Exp $
Rem
Rem sdosemutlh.sql
Rem
Rem Copyright (c) 2006, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      sdosemutlh.sql - <one-line expansion of the name>
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/sdosemutlh.sql
Rem    SQL_SHIPPED_FILE: md/admin/sdosemutlh.sql
Rem    SQL_PHASE: SDOSEMUTLH
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    alwu        03/23/17 - XbranchMerge alwu_bug-24319503 from
Rem                           st_sdo_12.2.0.1.0
Rem    rjanders    03/09/17 - Add missing SQL_FILE_METADATA information
Rem    sravada     01/11/17 - bug 25370681
Rem    alwu        07/28/16 - fix bug 24319503
Rem    matperry    11/06/15 - add utility functions for shortening long
Rem                           literals
Rem    alwu        07/23/15 - fix bug 21226251: LIDENT
Rem    matperry    09/04/14 - refactor sparql update for invoker rights
Rem    matperry    06/10/14 - modify merge_models helper functions for use with
Rem                           SPARQL UPDATE
Rem    matperry    03/31/14 - add method to raise java query exception
Rem    matperry    01/27/14 - move some utility methods from sem_match
Rem    rjanders    03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem                           initialization
Rem    alwu        09/25/12 - enhance get_parameter function
Rem    alwu        09/20/12 - handle the selection of delta model properly
Rem    alwu        08/02/12 - add new STATS APIs
Rem    matperry    03/09/11 - add number list to in list method
Rem    matperry    02/15/11 - add isSafeFilter
Rem    matperry    01/25/11 - bug 11661028: remove unnecessary privileges on
Rem                           ordmd_sem_libs and remove sem_hash_internal
Rem    alwu        12/16/10 - add local named graph inference
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    10/13/10 - add constants for default namespaces and prefixes
Rem    vkolovsk    09/14/10 - change get_value_type sig
Rem    alwu        08/11/10 - update with 11202 validation transaction
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    vkolovsk    07/28/10 - XbranchMerge vkolovsk_bug-9724396 from
Rem                           st_sdo_11.2.0
Rem    vkolovsk    07/13/10 - add get_value_type util wrapper
Rem    alwu        07/23/10 - add logic to get parallel dml dop
Rem    vkolovsk    05/27/10 - remove set_sub_hint
Rem    alwu        05/10/10 - XbranchMerge alwu_bug-9694148 from main
Rem    alwu        05/10/10 - add validation rules for OWL2 RL
Rem    vkolovsk    05/05/10 - add run_dml_stmt function
Rem    vkolovsk    11/11/09 - add parallel param to run_dml_stmt
Rem    matperry    07/13/09 - add helper function for xsd:time values
Rem    vkolovsk    06/09/09 - safe rowcount util, in cases when it returns a
Rem                           negative number
Rem    alwu        06/01/09 - add an option to allow columnar compression for
Rem                           merge_models
Rem    alwu        05/14/09 - add NegativePropertyAssertion checking based on
Rem                           the recent W3C OWL 2 profile change
Rem    alwu        05/02/09 - add wrap_num_col2raw
Rem    alwu        03/27/09 - add more IDs for SKOS integrity conditions
Rem    matperry    02/18/09 - add numberListContains
Rem    vkolovsk    02/18/09 - simplify run_dml_stmt
Rem    alwu        02/12/09 - change merge_models_create_tmp_tab to function to
Rem                           make sqlinjection test happy
Rem    vkolovsk    02/11/09 - simplifying merge_models_update_linktab param list
Rem    alwu        02/10/09 - factor out mapping, get_uri functions from
Rem                           sdoseminf to this file
Rem    alwu        11/19/08 - add intersection support
Rem    alwu        10/20/08 - add getting session setting function
Rem    vkolovsk    09/06/08 - sdosemutlb.sql
Rem    vkolovsk    09/03/08 - clique-related code
Rem    vkolovsk    08/28/08 - remove unnecessary functions
Rem    vkolovsk    08/07/08 - adding sameas-related utility procedures
Rem    alwu        03/29/07 - add collect stats
Rem    alwu        01/22/07 - move checkUserRules here as invoker may not have
Rem                           permission to be RDF_RULE tab
Rem    alwu        12/12/06 - try different views for dml/query perf stats
Rem    alwu        09/07/06 - sync up 11g document and proposed APIs
Rem    alwu        09/06/06 - introduce sub hint
Rem    mannamal    07/19/06 - Add anc boolean variable 
Rem    mannamal    07/05/06 - Add hash function 
Rem    alwu        06/29/06 - change to definer 
Rem    alwu        06/28/06 - factor out get/set proof from sdo_sem_infi 
Rem                           package 
Rem    alwu        06/01/06 - move GET_STATS from sdoseminfb.sql 
Rem    alwu        05/26/06 - start
Rem    alwu        05/26/06 - start
Rem    alwu        05/26/06 - Created
Rem

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

--
-- This is a schema private utlility package. 
-- 
create or replace package sdo_sem_utl as

  -- Constants for default namespaces and aliases
  RDF_ALIAS     CONSTANT VARCHAR2(3) := 'rdf';
  RDFS_ALIAS    CONSTANT VARCHAR2(4) := 'rdfs';
  XSD_ALIAS     CONSTANT VARCHAR2(3) := 'xsd';
  OWL_ALIAS     CONSTANT VARCHAR2(3) := 'owl';
  DC_ALIAS      CONSTANT VARCHAR2(2) := 'dc';
  DCTERMS_ALIAS CONSTANT VARCHAR2(7) := 'dcterms';
  ORARDF_ALIAS  CONSTANT VARCHAR2(6) := 'orardf';

  RDF_NS     CONSTANT VARCHAR2(43) := 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
  RDFS_NS    CONSTANT VARCHAR2(37) := 'http://www.w3.org/2000/01/rdf-schema#';
  XSD_NS     CONSTANT VARCHAR2(33) := 'http://www.w3.org/2001/XMLSchema#';
  OWL_NS     CONSTANT VARCHAR2(30) := 'http://www.w3.org/2002/07/owl#';
  DC_NS      CONSTANT VARCHAR2(32) := 'http://purl.org/dc/elements/1.1/';
  DCTERMS_NS CONSTANT VARCHAR2(25) := 'http://purl.org/dc/terms/';
  ORARDF_NS  CONSTANT VARCHAR2(28) := 'http://xmlns.oracle.com/rdf/';

  function getIdSco return number;
  function getIdType return number;
  function getIdComp return number;
  function getIdDisj return number;
  function getIdEquc return number;
  function getIdEqup return number;
  function getIdIo return number;
  function getIdSam return number;
  function getIdDif return number;
  function getIdDom return number;
  function getIdRan return number;
  function getIdSpo return number;
  function getIdTP return number;
  function getIdFP return number;
  function getIdSymP return number;
  function getIdIFP return number;
  function getIdCMP return number;
  function getIdMbr return number;

  function getIdPropDisj return number;
  function getIdSkosxlLabel return number;
  function getIdSkosxlLiteralForm return number;

  function getIdNPA return number;
  function getIdSrcInd return number;
  function getIdAssPro return number;
  function getIdTgtInd return number;
  function getIdTgtVal return number;

  function getIdMaxQCard return number;
  function getIdMaxCard return number;
  function getId0Int return number;
  function getIdIrreflexiveProperty return number;
  function getIdAsymmetricProperty return number;
  function getIdOP return number;
  function getIdOC return number;
  function getIdThing return number;

  function getIdNothing return number;

  procedure setInferTmpTabName(v varchar2);
  

  /**
   * Computes the expected length needed for the 
   * non-value_name portion of an RDF term
   */
  function computeNonVnLen(lang   varchar2,
                           ltype  varchar2)
  return number;

  /**
   * Computes the expected length of an RDF term with
   * these components.
   */
  function computeTermLen(vnameLen number,
                          lang     varchar2,
                          ltype    varchar2)
  return number;

  /**
   * Shortens a long literal while taking into account
   * literal type and language information so that the
   * resulting full RDF term is exactly 4K in length.
   */
  function shortenClobToVc(vname clob,
                           lang  varchar2,
                           ltype varchar2)
  return varchar2;

  /**
   * Shortens a varchar literal while taking into account
   * literal type and language information so that the
   * resulting full RDF term is exactly 4K in length.
   */
  function shortenVc(vname varchar2,
                     lang  varchar2,
                     ltype varchar2)
  return varchar2;

  /**
   * Converts a number list into a VARCHAR2 string for an
   * IN LIST containing the numbers. IN keyword is not included
   * only a list of numbers and enclosing parenthesis.
   */
  function numToInList(numList SYS.ODCINumberList)
  return varchar2;

  /**
   * Returns true if filter f is safe w.r.t. SQL injection
   */
  function isSafeFilter(f varchar2)
  return boolean;

  /**
   * Adjusts a timestamp value based on the given prefix
   * '+' add 1 day
   * '-' subtract 1 day
   * '@' no adjustment
   */
  function adjTsForPrefix(ts timestamp, prefix varchar2)
  return timestamp deterministic;
  pragma restrict_references (adjTsForPrefix,WNDS,RNDS,WNPS,RNPS);

  /**
   * Adjusts a timestamp with time zone value based on the given prefix
   * '+' add 1 day
   * '-' subtract 1 day
   * '@' no adjustment
   */
  function adjTsTzForPrefix(ts timestamp with time zone, prefix varchar2)
  return timestamp with time zone deterministic;
  pragma restrict_references (adjTsTzForPrefix,WNDS,RNDS,WNPS,RNPS);

  /**
   * Returns true if numList contains num, false otherwise
   * NOTE: it is ok for numList to be null
   */
  function numberListContains(numList SYS.ODCINumberList, num number) 
  return boolean;

  /**
   * Returns the collection type from an AnyType type definition.
   */
  function getCollectionElementType(typ SYS.AnyType)
  return SYS.AnyType;

  /**
   * Expands the list of graph names based on the input 
   * namespace prefixes.
   */
  function expandGraphNames (graphs  MDSYS.RDF_Graphs,
                             aliases MDSYS.RDF_Aliases)
  return MDSYS.RDF_Graphs;


  /**
   * Builds a meaningful error message from a java exception 
   * and raises a SQL error 
   */
  procedure raiseJavaQueryError(errm VARCHAR2);

  function get_sub_hint return varchar2;
  procedure set_sub_hint_aj;
  procedure set_sub_hint_empty;
  procedure set_sub_hint_aj_no_push_pred;

  function init_already return boolean;
  function get_all_property_id return sys.odciNumberList;

  /**
   * If returns NULL, it means that MDSYS has no privilege to read
   */
  function get_session_parallel_query_dop return number;


  /**
   * If returns NULL, it means that MDSYS has no privilege to read
   */
  function get_session_parallel_dml_dop return number;


  /**
   * This method returns TRUE if there is at least one user
   * defined rule in one of the rulebase specified by the list
   * of input rulebase IDs.
   * 
   * NOTE: it is ok for @param nlRulbaseIDs to be NULL.
   */
  function checkUserRules(nlRulbaseIDs sys.ODCINumberList) return boolean;

  /**
   * This method returns TRUE if vcPtnName partition exists in table
   * vcTableName. It is done here since we need to check against 
   * MDSYS' user_tab_partitions.
   */
  function check_partition_exists(vcTableName in varchar2,
                                 vcPtnName   in varchar2) return boolean;

  function check_table_exists(vcTableName in varchar2) return boolean;
 
  PROCEDURE enable_all_triggers( user_name   IN  varchar2,
                                 apptab_name IN  varchar2);

  PROCEDURE run_dml_stmt_merge(model_to_id     number, 
                         stmt_name  varchar2, 
                         dump_plan  boolean default false,
                         parallel   int     default 1);


  PROCEDURE disable_all_triggers(user_name   IN  varchar2,
                                 apptab_name IN  varchar2);

  function get_parameter(vcOptions in varchar2,
                            vcMark in varchar2,
                             vcEnd in varchar2 default null) return varchar2;

  function get_string_parameter(vcOptions in varchar2,
                                   vcMark in varchar2,
                                    vcEnd in varchar2 default null) return varchar2;

  function get_int_parameter(vcOptions in varchar2,
                                vcMark in varchar2) return int;


--  function build_models_union_clause(models            mdsys.rdf_models, 
--                                     bJustModels       boolean,
--                                     bProof            boolean,
--                                     vcRuleIdxPartView varchar2,
--                                     bForceUsePCSMIdx  boolean) return varchar2;
 
  /* MERGE MODELS HELPER FUNCTIONS - these need to be ran as MDSYS */
  PROCEDURE merge_models_swap_tmp_merge_to(tbs_name varchar2,
                                model_to_id      number,
                                tmp_tab_name     varchar2,
                                parallel         number);

  FUNCTION merge_models_create_tmp_tab(tbs_name varchar2,
                                model_from_id    number,
                                model_to_id      number,
                                merge_to_count   number,
                                merge_from_count number,
                                user_name        varchar2,
                                tmp_tab_count    IN OUT number,
                                parallel         number,
                                options          IN varchar2,
                                NLTH             number,
                                model_from_table IN varchar2 default null)
                                RETURN varchar2;
  
  PROCEDURE merge_models_update_linktab(tbs_name IN varchar2,
                                merge_from_model IN varchar2,
                                merge_to_model   IN varchar2,
                                model_to_id      IN number,
                                merge_to_count   IN number,
                                tmp_tab_Name     IN varchar2,
                                tmp_tab_count    IN number,
                                parallel         IN number,
                                ITH              IN number,
                                merge_from_table IN varchar2 default null,
                                user_name        IN varchar2 default null
                               );
   /* END MERGE MODELS HELPER FUNCTIONS */
 

   GET_STATS constant varchar2(1000) := '
    select name, value from (
      select ''stat.. '' || n.name name, t.value  value
        from v$mystat   t join v$statname n on t.statistic# = n.statistic#
       where n.name in (''redo size'', ''db block gets'', ''consistent gets'',
                        ''physical reads'',''sorts (memory)'',''sorts (disk)'',
                        ''recursive calls'',''redo write time'',
                        ''physical writes'',''rows processed'',
                        ''bytes sent via SQL*Net to client'',
                        ''bytes received via SQL*Net from client'',
                        ''SQL*Net roundtrips to/from client'')
          or (n.name like ''%ga %'')
          or (n.name like ''%direct temp%'')
    union all
      select ''latch. '' || n.name name, n.gets  value
        from v$latch n
       where n.name in (''library cache pin'', ''library cache pin allocation'',
                        ''library cache'', ''shared pool'')
     )  
     order by name
  ';


  -- v$sesstat does not help much
  GET_STATS_NEW constant varchar2(1000) := '
    select name, value from (
      select ''stat.. '' || n.name name, t.value  value
        from v$sesstat   t join v$statname n on t.statistic# = n.statistic#
       where t.sid = sys_context(''userenv'',''sid'')  and
          (n.name in (''redo size'', ''db block gets'', ''consistent gets'',
                        ''physical reads'',''sorts (memory)'',''sorts (disk)'',
                        ''recursive calls'',''redo write time'',
                        ''physical writes'',''rows processed'',
                        ''bytes sent via SQL*Net to client'',
                        ''bytes received via SQL*Net from client'',
                        ''SQL*Net roundtrips to/from client'')
          or (n.name like ''%ga %'')
          or (n.name like ''%direct temp%''))
    union all
      select ''latch. '' || n.name name, n.gets  value
        from v$latch n
       where n.name in (''library cache pin'', ''library cache pin allocation'',
                        ''library cache'', ''shared pool'')
     )  
     order by name
  ';


  /**
   * Will collect statistics for table m_vcInferTmpTabName.
   */
  procedure collect_stats;

  procedure exe_plan_prepare;
  procedure exe_plan_dump;

  function get_elapsed_time_in_sec(nStart number) return varchar2;
  function bool_to_str(b in boolean) return varchar2;


  procedure set_proof(b boolean);
  procedure set_anc(b boolean);
  function get_proof return boolean;
  function get_anc return boolean;

  /**
   * Note only model owner (or sys dba) is allowed to perform this action. 
   * All information in the existing application table will be lost. 
   * 'Triple' column will be reconstructed.
   */
  PROCEDURE remove_duplicates(model_name  in VARCHAR2,
                        model_id    in NUMBER,
                        apptab_name in VARCHAR2,
                        tbs_name    in VARCHAR2,
                        col_name    in VARCHAR2,
                        user_name   in VARCHAR2,
                        phase       in INTEGER,
                        owner_id  in out NUMBER,
                        table_id  in out NUMBER);


  /**
   * Get the value of the iPos'th number out from
   * the given string that is delimited by a single space ' '
   *
   * @param iPos MUST be a positive integer.
   */
  function get_number_in_pos(vcVal in varchar2,
                             iPos  in int ) return number;

  function get_uri(vid number) return varchar2;
  function convert_mapped2raw(i int) return varchar2;
  function wrap_raw_col2num(vcRawColName varchar2) return varchar2;
  function wrap_num_col2raw(vcNumColName varchar2) return varchar2;
  function use_raw return boolean;

  FUNCTION get_value_type (value IN OUT varchar2) return varchar2;
 
  function get_safe_rowcount(cnt int) return int;

  procedure set_use_prh(b boolean);
  procedure set_use_raw8(b boolean);
  function extract_marker(vcStmt varchar2) return varchar2;

--  function run_ddl_stmt(iRnd int, 
--                        vcStmt varchar2, 
--                        bPerfTuning boolean default false) return int;
  procedure set_start_time(n number);

  function get_columnar_compress_syn return varchar2;


  procedure export_model_stats(
   model_name      varchar2,
   stattab         VARCHAR2,
   statid          VARCHAR2 DEFAULT NULL,
   cascade         BOOLEAN  DEFAULT TRUE,
   statown         VARCHAR2 DEFAULT NULL,
   stat_category   VARCHAR2 DEFAULT 'OBJECT_STATS'
  );


  procedure import_model_stats(
   model_name      varchar2,
   stattab         VARCHAR2,
   statid          VARCHAR2 DEFAULT NULL,
   cascade         BOOLEAN  DEFAULT TRUE,
   statown         VARCHAR2 DEFAULT NULL,
   no_invalidate   BOOLEAN DEFAULT FALSE,
   force           BOOLEAN DEFAULT FALSE,
   stat_category   VARCHAR2 DEFAULT 'OBJECT_STATS'
   );


  procedure export_entailment_stats(
   entailment_name varchar2,
   stattab         VARCHAR2,
   statid          VARCHAR2 DEFAULT NULL,
   cascade         BOOLEAN  DEFAULT TRUE,
   statown         VARCHAR2 DEFAULT NULL,
   stat_category   VARCHAR2 DEFAULT 'OBJECT_STATS'
  );


  procedure import_entailment_stats(
   entailment_name varchar2,
   stattab         VARCHAR2,
   statid          VARCHAR2 DEFAULT NULL,
   cascade         BOOLEAN  DEFAULT TRUE,
   statown         VARCHAR2 DEFAULT NULL,
   no_invalidate   BOOLEAN DEFAULT FALSE,
   force           BOOLEAN DEFAULT FALSE,
   stat_category   VARCHAR2 DEFAULT 'OBJECT_STATS'
   );


  PROCEDURE set_model_stats (
   model_name    VARCHAR2,
   numrows       NUMBER    DEFAULT NULL,
   numblks       NUMBER    DEFAULT NULL,
   avgrlen       NUMBER    DEFAULT NULL,
   flags         NUMBER    DEFAULT NULL,
   no_invalidate BOOLEAN   DEFAULT DBMS_STATS.AUTO_INVALIDATE,
   cachedblk     NUMBER    DEFAULT NULL,
   cachehit      NUMBER    DEFAULT NULL,
   force         BOOLEAN   DEFAULT FALSE
  );


  PROCEDURE set_entailment_stats (
   entailment_name  VARCHAR2,
   numrows          NUMBER   DEFAULT NULL,
   numblks          NUMBER   DEFAULT NULL,
   avgrlen          NUMBER   DEFAULT NULL,
   flags            NUMBER   DEFAULT NULL,
   no_invalidate    BOOLEAN  DEFAULT DBMS_STATS.AUTO_INVALIDATE,
   cachedblk        NUMBER   DEFAULT NULL,
   cachehit         NUMBER   DEFAULT NULL,
   force            BOOLEAN  DEFAULT FALSE
  );
  
  procedure delete_network_stats(
    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,
    options          IN VARCHAR2 DEFAULT NULL
  )
  ;

  procedure export_network_stats(
   stattab         VARCHAR2,
   statid          VARCHAR2 DEFAULT NULL,
   cascade         BOOLEAN  DEFAULT TRUE,
   statown         VARCHAR2 DEFAULT NULL,
   stat_category   VARCHAR2 DEFAULT 'OBJECT_STATS',
   options         VARCHAR2 DEFAULT NULL
  );


  procedure import_network_stats(
   stattab         VARCHAR2,
   statid          VARCHAR2 DEFAULT NULL,
   cascade         BOOLEAN  DEFAULT TRUE,
   statown         VARCHAR2 DEFAULT NULL,
   no_invalidate   BOOLEAN DEFAULT FALSE,
   force           BOOLEAN DEFAULT FALSE,
   stat_category   VARCHAR2 DEFAULT 'OBJECT_STATS',
   options         VARCHAR2 DEFAULT NULL
  );
end;
/

show errors;

-- C libraries
--create or replace library ordmd_sem_libs trusted as static;
--/

--grant execute on ordmd_sem_libs to public;
--/

--create or replace package sem_hash_internal
--authid current_user as

--  function semhash (
--        k    varchar2,
--        initval binary_integer)
--  return  double precision
--  deterministic
--  as language C
--        name "md_hash"
--        library ordmd_sem_libs
--        parameters(
--        k string,
--        k length,
--        initval);

--end sem_hash_internal;
--/
--show errors;

-- grant execute on sem_hash_internal to public;







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


OHA YOOOO