MINI MINI MANI MO
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