MINI MINI MANI MO
Rem
Rem $Header: sdo/admin/sdordfctx.sql /main/27 2017/05/26 16:34:19 rjanders Exp $
Rem
Rem sdordftx.sql
Rem
Rem Copyright (c) 2009, 2017, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem sdordfctx.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/sdordfctx.sql
Rem SQL_SHIPPED_FILE: md/admin/sdordfctx.sql
Rem SQL_PHASE: SDORDFCTX
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 rjanders 05/10/17 - #26037683: Raise 'when other' exceptions
Rem rjanders 03/23/17 - #25437999: Remove 'when others then NULL'
Rem handlers
Rem rjanders 03/09/17 - Add missing SQL_FILE_METADATA information
Rem sravada 01/11/17 - bug 25370681
Rem sdas 12/12/13 - bug 17415371: no UNDER to PUBLIC
Rem rjanders 03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem initialization
Rem sdas 12/20/12 - XbranchMerge sdas_lrg-8624014 from
Rem st_sdo_12.1.0.1
Rem spsundar 12/12/12 - add grant under extractor type to public
Rem matperry 06/22/12 - make repeatable to be more upgrade friendly
Rem sdas 05/20/11 - tracing using ODCIenv
Rem sdas 05/12/11 - extend the batchExtractRdf interface
Rem spsundar 05/09/11 - rename sem_contains_score to sem_contains_count
Rem sdas 04/29/11 - mix of batch and regular policies
Rem sdas 04/25/11 - batch rebuild with multiple base-policies
Rem sdas 04/23/11 - continue batch interface: use two
Rem index_merge/index_load calls for GLOBAL index
Rem sdas 04/19/11 - batch interface implementation
Rem spsundar 04/11/11 - add new methods to interface for rdfctx_extractor
Rem sdas 02/01/11 - SDO version check should look for 11 or higher
Rem sdas 12/30/10 - pass mapping table names to build_index_partition
Rem spsundar 12/07/10 - add support for local semantic index
Rem sdas 08/11/10 - XbranchMerge sdas_bug-9937565 from st_sdo_11.2.0
Rem sdas 07/14/10 - allow loadMethod spec in prllidx_create type spec
Rem matperry 06/30/10 - move creation of object types for parallel index
Rem form prvtrdfctx to sdordfctx
Rem ayalaman 06/09/09 - stylesheet for web-service information extractor
Rem matperry 05/26/09 - remove WHENEVER SQLERROR EXIT
Rem ayalaman 05/20/09 - add methods set_extractor_param to rdfctx
Rem ayalaman 05/07/09 - gate nlp integration
Rem ayalaman 04/14/09 - handling 3rd party license key
Rem ayalaman 03/19/09 - rename select operator
Rem ayalaman 03/10/09 - ctx_entity extractor
Rem ayalaman 02/27/09 - user ontologies and rule bases
Rem ayalaman 02/09/09 - domain index implementation
Rem ayalaman 01/13/09 - RDF text search
Rem ayalaman 01/13/09 - Created
Rem
Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@@?/rdbms/admin/sqlsessstart.sql
Rem ********************************************************************
--WHENEVER SQLERROR EXIT;
----------------------------------------------------------------------------
--=========== PLEASE READ BEFORE MODIFYING TYPES ===========--
----------------------------------------------------------------------------
-- --
-- The idea is to make this script repeatable so that it is --
-- upgrade friendly, so follow these steps: --
-- --
-- 1) CREATE OR REPLACE TYPE with the original type definition --
-- from the first time that it is added. Then do not change this. --
-- 2) To drop a method/attribute --
-- a) drop the method/attribute in this file --
-- 3) To add a method/attribute --
-- a) add the method/attribute in this file --
-- b) drop method/attribute in semeXXX.sql file used during downgrade --
-- e.g. for release 12.1, modify seme112.sql --
-- --
-- Note that you have to wrap each modification in a PL/SQL block to --
-- catch errors (e.g. drop a method that's not there) so that the --
-- install does not fail. --
----------------------------------------------------------------------------
declare
rc NUMBER;
version VARCHAR2(100);
ver_num NUMBER;
table_not_found exception;
pragma exception_init(table_not_found, -00942);
already_revoked exception;
pragma exception_init(already_revoked, -01927);
cannot_revoke exception;
pragma exception_init(cannot_revoke, -02344);
begin
select count(*) into rc from SYS.all_objects where owner = 'MDSYS' and
object_name = 'SDO_RDF';
version := dbms_registry.version('SDO');
ver_num := to_number(substr(version,1,instr(version,'.')-1));
if (ver_num < 11 or rc = 0) then
raise_application_error(-20000, 'RDF Component not installed:'||
'RDF Component for 11.1 or above must be installed.');
end if;
begin
execute immediate 'revoke UNDER on mdsys.rdfctx_extractor from PUBLIC';
exception
when cannot_revoke then NULL;
when table_not_found then NULL;
when already_revoked then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdordfctx.sql(' || $$PLSQL_LINE || ')1]: ' || SQLERRM); -- RAISE;
end;
begin
execute immediate 'revoke UNDER on mdsys.rdfctx_ws_extractor from PUBLIC';
exception
when table_not_found then NULL;
when already_revoked then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdordfctx.sql(' || $$PLSQL_LINE || ')2]: ' || SQLERRM); -- RAISE;
end;
end;
/
declare
role_conflict exception;
pragma exception_init(role_conflict, -01921);
insufficient_privileges exception;
pragma exception_init(insufficient_privileges, -01031);
begin
execute immediate
'create role rdfctx_admin';
exception
when role_conflict then NULL;
when insufficient_privileges then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdordfctx.sql(' || $$PLSQL_LINE || ')3]: ' || SQLERRM); -- RAISE;
end;
/
WHENEVER SQLERROR CONTINUE;
grant execute on DBMS_NETWORK_ACL_ADMIN to mdsys;
DECLARE
entity_exists exception;
pragma exception_init(entity_exists, -46212);
child_exists exception;
pragma exception_init(child_exists, -31003);
BEGIN
DBMS_NETWORK_ACL_ADMIN.create_acl (
acl => 'mdsys_rdfctx.xml',
description => 'ACL for web service access from MDSYS',
principal => 'MDSYS',
is_grant => TRUE,
privilege => 'connect',
start_date => SYSTIMESTAMP,
end_date => NULL);
COMMIT;
exception
when entity_exists then NULL;
when child_exists then NULL;
when others then
raise;
END;
/
alter session set current_schema = MDSYS;
/*****************************************************************************/
/*** Text extractor for semantic searches ***/
/*****************************************************************************/
declare
dependent_objects exception;
pragma exception_init(dependent_objects, -02303);
begin
execute immediate
'create or replace type rdfctx_extractor authid current_user as object (
extr_type VARCHAR2(32),
member procedure startDriver,
member function getDescription return VARCHAR2,
-- RDF/XML,RDF/XML-ESC, etc
member function rdfReturnType return VARCHAR2,
-- In some cases, the rdf/xml text has escape sequences for the
-- XML tags which makes them invalid XML. Hence a generic CLOB type is
-- is used.
member function extractRdf(document CLOB,
docId VARCHAR2) return CLOB,
member procedure closeDriver
) not instantiable not final';
exception
when dependent_objects then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create rdfctx_extractor: '||SQLERRM);
end;
/
show errors;
-- drop any original or non-original methods that are no longer needed
-- add current set of non-original methods
-- add a new method to extractor type that returns the value for a specified attribute
-- including:
-- DBUSER: the DB user on the extractor side who is going to connect to the database
-- to read from the documents from the docTable and
-- write extracted info (in rdfReturnType format) to the extr_info_table
--
-- BATCH_SUPPORT: 'YES' or 'NO'
--
-- more to follow...
declare
compile_errors exception;
pragma exception_init(compile_errors, -22324);
begin
execute immediate
'alter type rdfctx_extractor
add member function getContext(attribute VARCHAR2) return VARCHAR2
cascade';
exception
when compile_errors then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: rdfctx_extractor (add getContext): '||SQLERRM);
end;
/
-- parameters (such as quality of extraction) will be passed
declare
compile_errors exception;
pragma exception_init(compile_errors, -22324);
begin
execute immediate
'alter type rdfctx_extractor
add member function extractRdf(document CLOB,
docId VARCHAR2,
params VARCHAR2,
options VARCHAR2 default NULL) return CLOB
cascade';
exception
when compile_errors then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: rdfctx_extractor (add extractRdf): '||SQLERRM);
end;
/
-- for batch extraction, we pass
-- a cursor for reading the documents
-- a table_name for holding data extracted from the docs
-- params (such as quality of extraction) that will be passed on uninterpreted
declare
compile_errors exception;
pragma exception_init(compile_errors, -22324);
begin
execute immediate
'alter type rdfctx_extractor
add member function batchExtractRdf(docCursor SYS_REFCURSOR,
extracted_info_table VARCHAR2,
params VARCHAR2,
partition_name VARCHAR2 default NULL,
docId VARCHAR2 default NULL,
preferences SYS.XMLType default NULL,
options VARCHAR2 default NULL) return CLOB
cascade';
exception
when compile_errors then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: rdfctx_extractor (add batchExtractRdf): '||SQLERRM);
end;
/
grant execute on rdfctx_extractor to public;
grant execute on rdfctx_extractor to public;
/*****************************************************************************/
/*** Text extractor that is implemented as a web service ***/
/*****************************************************************************/
declare
dependent_objects exception;
pragma exception_init(dependent_objects, -02303);
begin
execute immediate
'create or replace type rdfctx_ws_extractor under rdfctx_extractor (
ws_end_point VARCHAR2(1024),
ws_soap_act VARCHAR2(1024),
ws_envelope CLOB,
ws_xsltrans sys.XMLType,
overriding member function getDescription return VARCHAR2,
overriding member function rdfReturnType return VARCHAR2,
-- sets the proxy server for the current instance --
overriding member procedure startDriver,
-- post the http request to the web service end-point and
-- returns the response --
overriding member function extractRdf(document CLOB,
docId VARCHAR2) return CLOB,
-- closes the driver --
overriding member procedure closeDriver
) not instantiable not final';
exception
when dependent_objects then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create rdfctx_ws_extractor: '||SQLERRM);
end;
/
show errors;
grant execute on rdfctx_ws_extractor to public;
grant execute on rdfctx_ws_extractor to public;
/*****************************************************************************/
/*** SEM_RDFCTX : Package for configuring Semantic search on Text ***/
/*****************************************************************************/
create or replace package sem_rdfctx authid current_user as
procedure create_policy (
policy_name VARCHAR2,
extractor mdsys.rdfctx_extractor,
preferences sys.XMLType default null);
procedure create_policy (
policy_name VARCHAR2,
base_policy VARCHAR2);
procedure create_policy (
policy_name VARCHAR2,
base_policy VARCHAR2,
user_models mdsys.rdf_models,
rulebases mdsys.rdf_rulebases default null);
procedure create_policy (
policy_name VARCHAR2,
base_policy VARCHAR2,
user_models mdsys.rdf_models,
user_entailments mdsys.rdf_models,
rulebases mdsys.rdf_rulebases default null);
procedure drop_policy (
policy_name VARCHAR2);
procedure set_default_policy (
index_name VARCHAR2,
policy_name VARCHAR2);
procedure add_dependent_policy (
index_name VARCHAR2,
policy_name VARCHAR2,
partition_name VARCHAR2 default NULL);
function extract_rdfxml (
doc CLOB,
ext_type mdsys.rdfctx_extractor) return CLOB;
procedure maintain_triples (
index_name VARCHAR2,
where_clause VARCHAR2,
rdfxml_content sys.XMLType,
policy_name VARCHAR2 default NULL,
action VARCHAR2 default 'ADD');
procedure set_extractor_param (
param_key VARCHAR2,
param_value VARCHAR2,
param_desc VARCHAR2);
end sem_rdfctx;
/
show errors;
create or replace public synonym sem_rdfctx for mdsys.sem_rdfctx;
grant execute on sem_rdfctx to public;
/*****************************************************************************/
/*** CALAIS Extractor : web service extractor ***/
/*****************************************************************************/
declare
dependent_objects exception;
pragma exception_init(dependent_objects, -02303);
begin
execute immediate
'create or replace type calais_extractor under rdfctx_ws_extractor (
constructor function calais_extractor (
extr_params sys.XMLType default null)
return self as result,
constructor function calais_extractor (
ws_end_point VARCHAR2,
ws_soap_act VARCHAR2,
extr_params sys.XMLType default null)
return self as result,
overriding member function extractRdf(document CLOB,
docId VARCHAR2) return CLOB
)';
exception
when dependent_objects then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create calais_extractor: '||SQLERRM);
end;
/
grant execute on calais_extractor to public;
/*****************************************************************************/
/*** CTX_ENTITY_EXTRACTOR : Oracle Context extractor ***/
/*****************************************************************************/
-- original definition --
declare
dependent_objects exception;
pragma exception_init(dependent_objects, -02303);
begin
execute immediate
'create or replace type ctx_entity_extractor under rdfctx_extractor (
epl_policy VARCHAR2(30),
xsl_trans sys.XMLtype,
constructor function ctx_entity_extractor (
epl_policy VARCHAR2,
base_url VARCHAR2 default null) return self as result,
constructor function ctx_entity_extractor (
epl_policy VARCHAR2,
xsl_trans sys.xmltype) return self as result,
overriding member function getDescription return VARCHAR2,
overriding member function rdfReturnType return VARCHAR2,
overriding member function extractRdf(document CLOB,
docId VARCHAR2) return CLOB
)';
exception
when dependent_objects then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create ctx_entity_extractor: '||SQLERRM);
end;
/
-- drop any methods no longer needed
-- now add current set of non-original methods
-- new batch extraction function --
declare
compile_errors exception;
pragma exception_init(compile_errors, -22324);
begin
execute immediate
'alter type ctx_entity_extractor
add overriding member function extractRdf(document CLOB,
docId VARCHAR2,
params VARCHAR2,
options VARCHAR2 default NULL) return CLOB
cascade';
exception
when compile_errors then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: ctx_entity_extractor (add extractRdf): '||SQLERRM);
end;
/
grant execute on ctx_entity_extractor to public;
/*****************************************************************************/
/*** GATE NLP Extractor : extractor using GATE NLP ***/
/*****************************************************************************/
declare
dependent_objects exception;
pragma exception_init(dependent_objects, -02303);
begin
execute immediate
'create or replace type gatenlp_extractor under mdsys.rdfctx_extractor (
gate_host VARCHAR2(100),
gate_port NUMBER,
xsl_trans sys.XMLtype,
constructor function gatenlp_extractor (base_url VARCHAR2 default null)
return self as result,
constructor function gatenlp_extractor (xsl_trans sys.xmltype)
return self as result,
overriding member function getDescription return VARCHAR2,
overriding member function extractRdf (document CLOB,
docId VARCHAR2) return CLOB
)';
exception
when dependent_objects then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create gatenlp_extractor: '||SQLERRM);
end;
/
grant execute on gatenlp_extractor to public;
/*****************************************************************************/
/*** Types for parallel index creation ***/
/*****************************************************************************/
declare
dependent_objects exception;
pragma exception_init(dependent_objects, -02303);
begin
execute immediate
'create or replace type doublenumlist as table of sys.odcinumberlist';
exception
when dependent_objects then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create doublenumlist: '||SQLERRM);
end;
/
declare
dependent_objects exception;
pragma exception_init(dependent_objects, -02303);
begin
execute immediate
'create or replace type fn_extarr is varray(5) of mdsys.rdfctx_extractor';
exception
when dependent_objects then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create fn_extarr: '||SQLERRM);
end;
/
declare
dependent_objects exception;
pragma exception_init(dependent_objects, -02303);
begin
execute immediate
'create or replace type fn_xmlpref is varray(5) of sys.xmltype';
exception
when dependent_objects then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create fn_xmlpref: '||SQLERRM);
end;
/
/*** prllidx_create type ***/
-- original definition --
begin
execute immediate
'create or replace type prllidx_create authid current_user as object (
c1 number,
static function index_merge(
idxschema IN varchar2,
idxname IN varchar2,
moderr IN sys.odcinumberlist,
c1 IN SYS_REFCURSOR) return sys.odcinumberlist
parallel_enable (partition c1 by any),
static function index_load(
filedir varchar2,
filterpl varchar2,
basepol sys.ODCIVarchar2List,
ctxpref fn_xmlpref,
extarr fn_extarr,
modarr sys.ODCINumberList,
polrids sys.ODCIvarchar2List,
loadMethod varchar2,
cur SYS_REFCURSOR) return doublenumlist
parallel_enable (partition cur by any) pipelined
)';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create prllidx_create: '||SQLERRM);
end;
/
-- modifications --
-- drop any original or non-original methods that are no longer used
begin
execute immediate
'alter type prllidx_create
drop static function index_merge(
idxschema IN varchar2,
idxname IN varchar2,
moderr IN sys.odcinumberlist,
c1 IN SYS_REFCURSOR) return sys.odcinumberlist
parallel_enable (partition c1 by any)
cascade';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: prllidx_create (drop index_merge): '||SQLERRM);
end;
/
begin
execute immediate
'alter type prllidx_create
drop static function index_load(
filedir varchar2,
filterpl varchar2,
basepol sys.ODCIVarchar2List,
ctxpref fn_xmlpref,
extarr fn_extarr,
modarr sys.ODCINumberList,
polrids sys.ODCIvarchar2List,
loadMethod varchar2,
cur SYS_REFCURSOR) return doublenumlist
parallel_enable (partition cur by any) pipelined
cascade';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: prllidx_create (drop index_load): '||SQLERRM);
end;
/
-- add current set of non-original methods
begin
execute immediate
'alter type prllidx_create
add static function index_merge(
idxschema IN varchar2,
idxname IN varchar2,
moderr IN sys.odcinumberlist,
flags IN number,
c1 IN SYS_REFCURSOR) return sys.odcinumberlist
parallel_enable (partition c1 by any)
cascade';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: prllidx_create (add index_merge): '||SQLERRM);
end;
/
begin
execute immediate
'alter type prllidx_create
add static function index_load(
idxschema IN varchar2,
idxname IN varchar2,
filedir varchar2,
filterpl varchar2,
basepol sys.ODCIVarchar2List,
extrParams sys.ODCIVarchar2List,
ctxpref fn_xmlpref,
extarr fn_extarr,
modarr sys.ODCINumberList,
polrids sys.ODCIvarchar2List,
loadMethod varchar2,
stagtab_name varchar2,
docUri2Rid_name varchar2,
docVid2Rid_name varchar2,
is_batchpol sys.ODCINumberList,
flags number,
cur SYS_REFCURSOR) return doublenumlist
parallel_enable (partition cur by any) pipelined
cascade';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: prllidx_create (add index_load): '||SQLERRM);
end;
/
begin
execute immediate
'alter type prllidx_create
add static function build_index_partition(
idxinfo sys.ODCIIndexInfo,
l_modarr sys.ODCINumberList,
filedir VARCHAR2,
filterpl varchar2,
l_basepol sys.ODCIVarchar2List,
l_extrParams sys.ODCIVarchar2List,
l_ctxpref fn_xmlpref,
t_extarr fn_extarr,
l_polrids sys.ODCIVarchar2List,
loadMethod varchar2,
stagtab_name varchar2,
docUri2Rid_name varchar2,
docVid2Rid_name varchar2,
xinfotab_name varchar2,
flags number) return number
cascade';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: prllidx_create (add build_index_partition): '||SQLERRM);
end;
/
begin
execute immediate
'alter type prllidx_create
add static function build_index_batch_extr(
idxinfo sys.ODCIIndexInfo,
l_modarr sys.ODCINumberList,
filedir varchar2,
filterpl varchar2,
l_basepol sys.ODCIVarchar2List,
l_batchpol sys.ODCINumberList,
l_extrParams sys.ODCIVarchar2List,
l_ctxpref fn_xmlpref,
t_extarr fn_extarr,
l_polrids sys.ODCIVarchar2List,
l_errcnt in out sys.ODCINumberList,
l_docUriPfx varchar2,
l_docUriShortPfx varchar2,
loadMethod varchar2,
stagtab_name varchar2,
l_stagtab_suffixes sys.ODCIvarchar2List,
docUri2Rid_name varchar2,
docVid2Rid_name varchar2,
xinfotab_name varchar2,
l_sel_basetab varchar2,
flags number) return number
cascade';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: prllidx_create (add build_index_batch_extr): '||SQLERRM);
end;
/
show errors;
grant execute on prllidx_create to public;
@@prvtrdfctx.plb
/*****************************************************************************/
/*** Indextype and Operators ***/
/*****************************************************************************/
-- To make upgrade friendly
-- 1) create dummy operator and associate with SemContext
-- 2) disassociate all operators and bindings (except dummy) from SemContext
-- 3) drop force all operators
-- 4) create operators and associate them with SemContext
-- dummy function --
declare
object_not_found exception;
pragma exception_init(object_not_found, -04043);
begin
execute immediate
'drop function semctx_dummy_function';
exception
when object_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop semctx_dummy_function: '||SQLERRM);
end;
/
create function semctx_dummy_function(param in varchar2)
return number is
begin
return 1;
end;
/
-- dummy operator --
declare
operator_not_found exception;
pragma exception_init(operator_not_found, -29807);
begin
execute immediate
'drop operator semctx_dummy';
exception
when operator_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop semctx_dummy: '||SQLERRM);
end;
/
begin
execute immediate
'create operator semctx_dummy binding
(varchar2) return number
using semctx_dummy_function';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create semctx_dummy: '||SQLERRM);
end;
/
-- add dummy operator to semcontext index type --
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
add semctx_dummy(varchar2)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: add semctx_dummy to SemContext: '||SQLERRM);
end;
/
-- drop all operators associated with the indextype
-- including old ones that are no longer used
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(varchar2, varchar2)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(varchar2, varchar2): '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(varchar2, varchar2, mdsys.RDF_ALIASES)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(varchar2, varchar2, mdsys.RDF_ALIASES): '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(varchar2, varchar2, varchar2)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(varchar2, varchar2, varchar2: '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(varchar2, varchar2, varchar2, mdsys.RDF_ALIASES)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(varchar2, varchar2, varchar2, mdsys.RDF_ALIASES): '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(varchar2, varchar2, varchar2, integer, mdsys.RDF_ALIASES)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(varchar2, varchar2, varchar2, integer, mdsys.RDF_ALIASES): '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(CLOB, varchar2)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(CLOB, varchar2): '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(CLOB, varchar2, mdsys.RDF_ALIASES)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(CLOB, varchar2, mdsys.RDF_ALIASES): '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(CLOB, varchar2, varchar2)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(CLOB, varchar2, varchar2): '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(CLOB, varchar2, varchar2, mdsys.RDF_ALIASES)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(CLOB, varchar2, varchar2, mdsys.RDF_ALIASES): '||SQLERRM);
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
execute immediate
'alter indextype SemContext
drop sem_contains(CLOB, varchar2, varchar2, integer, mdsys.RDF_ALIASES)';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains(CLOB, varchar2, varchar2, integer, mdsys.RDF_ALIASES): '||SQLERRM);
end;
/
-- drop all operators --
declare
operator_not_found exception;
pragma exception_init(operator_not_found, -29807);
begin
execute immediate
'drop operator sem_contains_select force';
exception
when operator_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains_select: '||SQLERRM);
end;
/
declare
operator_not_found exception;
pragma exception_init(operator_not_found, -29807);
begin
execute immediate
'drop operator sem_contains_count force';
exception
when operator_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains_count: '||SQLERRM);
end;
/
declare
operator_not_found exception;
pragma exception_init(operator_not_found, -29807);
begin
execute immediate
'drop operator sem_contains force';
exception
when operator_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: drop sem_contains: '||SQLERRM);
end;
/
-- Now create the operators and indextype --
create or replace operator sem_contains binding
(VARCHAR2, VARCHAR2) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(VARCHAR2, VARCHAR2, VARCHAR2) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(VARCHAR2, VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(CLOB, VARCHAR2) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(CLOB, VARCHAR2, mdsys.RDF_ALIASES) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(CLOB, VARCHAR2, VARCHAR2) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(CLOB, VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(VARCHAR2, VARCHAR2, VARCHAR2, INTEGER, mdsys.RDF_ALIASES) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains,
(CLOB, VARCHAR2, VARCHAR2, INTEGER, mdsys.RDF_ALIASES) return NUMBER
WITH INDEX CONTEXT, SCAN CONTEXT SemContextIndexMethods
COMPUTE ANCILLARY DATA
USING mdsys.sem_rdfctx_oper.sem_contains;
grant execute on sem_contains to public;
create or replace public synonym sem_contains for mdsys.sem_contains;
create or replace operator sem_contains_select binding
(NUMBER) return CLOB
ANCILLARY TO mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2),
mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2, VARCHAR2),
mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2, VARCHAR2, INTEGER, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2, VARCHAR2),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2, VARCHAR2, INTEGER, mdsys.RDF_ALIASES)
USING mdsys.sem_rdfctx_oper.sem_rdfctx_select;
grant execute on sem_contains_select to public;
create or replace public synonym sem_contains_select for mdsys.sem_contains_select;
create or replace operator sem_contains_count binding
(NUMBER) return NUMBER
ANCILLARY TO mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2),
mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2, VARCHAR2),
mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (VARCHAR2, VARCHAR2, VARCHAR2, INTEGER, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2, VARCHAR2),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
mdsys.SEM_CONTAINS (CLOB, VARCHAR2, VARCHAR2, INTEGER, mdsys.RDF_ALIASES)
USING mdsys.sem_rdfctx_oper.sem_rdfctx_count;
grant execute on sem_contains_count to public;
create or replace public synonym sem_contains_count for mdsys.sem_contains_count;
-- initially create indextype with dummy operator in case it doesn't exist --
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -00955);
begin
execute immediate
'create indextype SemContext for
semctx_dummy(varchar2)
using SemContextIndexMethods
with local range partition';
exception
when indextype_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: create SemContext indextype: '||SQLERRM);
end;
/
-- alter index in case of upgrade --
alter indextype SemContext
using SemContextIndexMethods
with local range partition;
-- add current set of operators
alter indextype SemContext
add SEM_CONTAINS(VARCHAR2, VARCHAR2),
add SEM_CONTAINS(VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
add SEM_CONTAINS(VARCHAR2, VARCHAR2, VARCHAR2),
add SEM_CONTAINS(VARCHAR2, VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
add SEM_CONTAINS(VARCHAR2, VARCHAR2, VARCHAR2, INTEGER, mdsys.RDF_ALIASES),
add SEM_CONTAINS(CLOB, VARCHAR2),
add SEM_CONTAINS(CLOB, VARCHAR2, mdsys.RDF_ALIASES),
add SEM_CONTAINS(CLOB, VARCHAR2, VARCHAR2),
add SEM_CONTAINS(CLOB, VARCHAR2, VARCHAR2, mdsys.RDF_ALIASES),
add SEM_CONTAINS(CLOB, VARCHAR2, VARCHAR2, INTEGER, mdsys.RDF_ALIASES);
grant execute on SemContext to public;
-- cleanup (drop dummies) --
begin
execute immediate
'alter indextype SemContext
drop semctx_dummy(varchar2)';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: cleanup drop semctx_dummy(varchar2): '||SQLERRM);
end;
/
declare
operator_not_found exception;
pragma exception_init(operator_not_found, -29807);
begin
execute immediate
'drop operator semctx_dummy force';
exception
when operator_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: cleanup drop semctx_dummy: '||SQLERRM);
end;
/
declare
object_not_found exception;
pragma exception_init(object_not_found, -04043);
begin
execute immediate
'drop function semctx_dummy_function';
exception
when object_not_found then NULL;
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'SEM_INSTALL: sdordfctx: cleanup drop semctx_dummy_function: '||SQLERRM);
end;
/
-- update rdf_parameter
declare
table_not_found exception;
pragma exception_init(table_not_found, -00942);
begin
insert into mdsys.rdf_parameter (namespace, attribute, value, description)
values ('COMPONENT','RDFCTX','INSTALLED','Semantic (Text) Search component');
exception
when table_not_found then null;
when dup_val_on_index then null;
end;
/
commit;
Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@?/rdbms/admin/sqlsessend.sql
Rem ********************************************************************
OHA YOOOO