MINI MINI MANI MO
rem
rem Copyright (c) 1995, 1996, 1997, 1998, 1999 by Oracle Corporation
rem NAME
rem dr0thes.pkh - Spec for ConText Option external thesaurus package
rem DESCRIPTION
rem This contains the interface to the external thesaurus procedures
rem
rem RETURNS
rem
rem NOTES
rem
rem
rem BEGIN SQL_FILE_METADATA
rem SQL_SOURCE_FILE: ctx_src_2/src/dr/admin/dr0thes.pkh
rem SQL_SHIPPED_FILE: ctx/admin/dr0thes.pkh
rem SQL_PHASE: DR0THES_PKH
rem SQL_STARTUP_MODE: NORMAL
rem SQL_IGNORABLE_ERRORS: NONE
rem SQL_CALLING_FILE: ctx/admin/ctxpkh.sql
rem END SQL_FILE_METADATA
rem
rem MODIFIED (MM/DD/YY)
rem shorwitz 03/14/15 - Bug 20533031: long identifier bugs
rem surman 01/23/15 - 20411134: Add SQL metadata tags
rem surman 03/15/13 - 16473661: Common start and end scripts
rem hsarkar 06/08/11 - Logical Standby Support
rem hsarkar 11/02/10 - Bug 10211776
rem ehuang 03/30/00 - add has_relation
rem ehuang 12/01/99 - add translation calls
rem ehuang 04/21/99 - add maintenance api
rem gkaminag 04/14/99 - pl/sql table thesaurus expansion
rem ehuang 08/05/98 - add TR, TRSYN
rem gkaminag 07/13/98 - remove unused functions
rem gkaminag 05/22/97 - procedure style
rem gkaminag 03/17/97 - add output style
rem gkaminag 03/11/97 - case-sensitive, bti/nti
rem yucheng 12/10/96 - creation
@@?/rdbms/admin/sqlsessstart.sql
CREATE OR REPLACE PACKAGE ctx_thes AS
type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;
-- public constants
OP_RENAME constant varchar2(6) := 'RENAME';
OP_TRUNCATE constant varchar2(8) := 'TRUNCATE';
OP_PT constant varchar2(2) := 'PT';
OP_SN constant varchar2(2) := 'SN';
/*========================================================================*/
/* Thesaurus Maintenance Functions */
/*========================================================================*/
/*--------------------------- create_thesaurus ---------------------------*/
/*
NAME
create_thesaurus - create a new thesaurus
DESCRIPTION
This procedure creates a new thesaurus with the indicated name
ARGUMENTS
name -- the new thesaurus name
casesens -- case-sensitive
NOTES
error if the thesaurus already exists
Only ctxsys or user with ctxapp role can use this
RETURN
*/
procedure create_thesaurus(
name in varchar2
, casesens in boolean default false
);
PRAGMA SUPPLEMENTAL_LOG_DATA(create_thesaurus, AUTO);
/*--------------------------- drop_thesaurus ---------------------------*/
/*
NAME
drop_thesaurus - drop a thesaurus
DESCRIPTION
This procedure drops an existing thesaurus with the indicated name
ARGUMENTS
name -- the thesaurus name
NOTES
error if the thesaurus already exists
Only ctxsys or thesaurus owner should be able to drop a thesaurus
RETURN
*/
procedure drop_thesaurus(tname in varchar2);
PRAGMA SUPPLEMENTAL_LOG_DATA(drop_thesaurus, AUTO);
/*--------------------------- alter_thesaurus ---------------------------*/
/* NAME
alter_thesaurus -- alter an existing thesaurus
DESCRIPTION
This procedure rename or truncate a thesaurus.
ARGUMENTS
tname -- thesaurus name
op -- alter operation, one of 'RENAME' or 'TRUNCATE'
operand -- argument to the alter operation
RENAME new thesaurus name
TRUNCATE null
NOTES
Only thesaurus owner and ctxsys are allowed to invoke this
function on a given thesaurus
RETURN
*/
procedure alter_thesaurus(tname in varchar2,
op in varchar2,
operand in varchar2 default null);
PRAGMA SUPPLEMENTAL_LOG_DATA(alter_thesaurus, AUTO);
/*--------------------------- import_thesaurus ---------------------------*/
/* NAME
import_thesaurus -- imports thesaurus
DESCRIPTION
This procedure loads a thesaurus
ARGUMENTS
name -- thesaurus name
data -- thesaurus data
casesens -- 'Y' for case sensitive, 'N' for case-insensitive
NOTES
Only thesaurus owner and ctxsys are allowed to invoke this
function on a given thesaurus
RETURN
*/
procedure import_thesaurus(name in varchar2,
data in clob,
casesens in varchar2 default 'N');
PRAGMA SUPPLEMENTAL_LOG_DATA(import_thesaurus, AUTO);
/*--------------------------- export_thesaurus ---------------------------*/
/* NAME
export_thesaurus -- exports thesaurus
DESCRIPTION
This procedure dumps thesaurus to a clob
ARGUMENTS
name -- thesaurus name
thesdump -- result lob
NOTES
Only thesaurus owner and ctxsys are allowed to invoke this
function on a given thesaurus
RETURN
*/
procedure export_thesaurus (name in varchar2,
thesdump in out nocopy clob);
/*--------------------------- create_phrase -----------------------------*/
/*
NAME
create_phrase -- add a phrase to a thesaurus
DESCRIPTION
This procedure adds a phrase to the thesaurus
ARGUMENTS
tname -- thesaurus name
phrase -- phrase to add
rel -- DEPRECATED
relname -- DEPRECATED
NOTES
no error if the information already exists.
Only ctxsys or user with ctxapp role can use this
REL and RELNAME arguments are deprecated -- use create_relation
instead.
RETURN
*/
procedure create_phrase(tname in varchar2,
phrase in varchar2,
rel in varchar2 default null,
relname in varchar2 default null);
PRAGMA SUPPLEMENTAL_LOG_DATA(create_phrase, AUTO);
/*--------------------------- drop_phrase -----------------------------*/
/*
NAME
drop_phrase -- drop a phrase from a thesaurus
DESCRIPTION
This procedure drops a phrase from the thesaurus
ARGUMENTS
tname -- thesaurus name
phrase -- phrase to drop
NOTES
BT* / NT* relations are patched around the dropped phrase
RETURN
*/
procedure drop_phrase(tname in varchar2,
phrase in varchar2);
PRAGMA SUPPLEMENTAL_LOG_DATA(drop_phrase, AUTO);
/*--------------------------- alter_phrase -----------------------------*/
/*
NAME
alter_phrase -- alter an existing phrase in a thesaurus
DESCRIPTION
This procedure alters a phrase in a thesaurus.
ARGUMENTS
tname -- thesaurus name
phrase -- phrase to alter
op -- alter operation. should be one of 'RENAME', 'PT' ,'SN'
operand -- argument to the alter operation
PT null
RENAME new phrase name
SN new scope note
NOTES
Only ctxsys or thesaurus owner can alter a phrase
RETURN
*/
procedure alter_phrase(tname in varchar2,
phrase in varchar2,
op in varchar2,
operand in varchar2 default null);
PRAGMA SUPPLEMENTAL_LOG_DATA(alter_phrase, AUTO);
/*--------------------------- create_relation -----------------------------*/
/*
NAME
create_relation -- create a relation
DESCRIPTION
This procedure creates a relation between two phrases
ARGUMENTS
tname -- thesaurus name
phrase -- the filing phrase
rel -- relation to create
relphrase -- the related phrase
NOTES
Only ctxsys or thesaurus owner can create a relation
if either phrase or relphrase do not exist, they are created
as part of this call.
phrase is the filing phrase and relphrase is the related phrase,
so a thesaurus like this:
A
BT B
would be translated as
create_phrase('THES', 'A');
create_phrase('THES', 'B');
create_relation('THES','A','BT','B');
RETURN
*/
procedure create_relation(tname in varchar2,
phrase in varchar2,
rel in varchar2,
relphrase in varchar2);
PRAGMA SUPPLEMENTAL_LOG_DATA(create_relation, AUTO);
/*--------------------------- drop_relation -----------------------------*/
/*
NAME
drop_relation -- drop a relation
DESCRIPTION
This procedure drops a relation between two phrases
ARGUMENTS
tname -- thesaurus name
phrase -- the filing phrase
rel -- relation to drop
relphrase -- the related phrase
NOTES
Only ctxsys or thesaurus owner can drop a relation
phrase is the filing phrase and relphrase is the related phrase,
so a relation like this:
A
BT B
would be dropped as
drop_relation('THES','A','BT','B');
this is symmetric with create_relation
RETURN
*/
procedure drop_relation(tname in varchar2,
phrase in varchar2,
rel in varchar2,
relphrase in varchar2 default null);
PRAGMA SUPPLEMENTAL_LOG_DATA(drop_relation, AUTO);
/*-------------------------- create_translation -----------------------------*/
/*
NAME
create_translation -- create a translation
DESCRIPTION
This procedure creates a new translation for a phrase
ARGUMENTS
tname -- thesaurus name
phrase -- phrase in the thesaurus to which to add a translation
language -- language of the translation
translation -- translated term
NOTES
Only ctxsys or thesaurus owner can create a relation.
Phrase must already exist in the thesarus, or an error is raised.
If a translation for this phrase for this language already exists,
this new translation is added without removing that original
translation, so long as that original translation is not the same.
RETURN
*/
procedure create_translation(tname in varchar2,
phrase in varchar2,
language in varchar2,
translation in varchar2);
PRAGMA SUPPLEMENTAL_LOG_DATA(create_translation, AUTO);
/*-------------------------- drop_translation -----------------------------*/
/*
NAME
drop_translation -- drop a translation
DESCRIPTION
This procedure drops one or more translations for a phrase
ARGUMENTS
tname -- thesaurus name
phrase -- phrase in the thesaurus to which to add a translation
language -- language of the translation
translation -- translated term
NOTES
Only ctxsys or thesaurus owner can drop a relation.
Phrase must already exist in the thesarus, or an error is raised.
Language is optional. If not specified, translation must also be
not specified, and all translations in all languages for the
phrase are removed. An error is raised if the phrase has no
translation.
RETURN
*/
procedure drop_translation(tname in varchar2,
phrase in varchar2,
language in varchar2 default null,
translation in varchar2 default null);
PRAGMA SUPPLEMENTAL_LOG_DATA(drop_translation, AUTO);
/*-------------------------- update_translation -----------------------------*/
/*
NAME
update_translation -- update a translation
DESCRIPTION
This procedure updates an existing translation
ARGUMENTS
tname -- thesaurus name
phrase -- phrase in the thesaurus to which to add a translation
language -- language of the translation
translation -- translated term
new_translation -- new form of translated term
NOTES
Only ctxsys or thesaurus owner can update a relation.
Phrase must already exist in the thesarus, or an error is raised.
Translation can be passed in as NULL if there is only on translation
for the specified language for this error. An error will be raised
if there is more than one translation for the term in the specified
language
The translation must already exist, or an error is raised.
RETURN
*/
procedure update_translation(tname in varchar2,
phrase in varchar2,
language in varchar2,
translation in varchar2,
new_translation in varchar2);
PRAGMA SUPPLEMENTAL_LOG_DATA(update_translation, AUTO);
/*========================================================================*/
/* Expansion Functions */
/*========================================================================*/
/*---------------------------- output_style --------------------------------*/
/*
NAME
output_style
DESCRIPTION
set the output style for the expansion functions
ARGUMENTS
showlevel -- show level in bt/nt expansions
showqualify -- show phrase qualifiers
showpt -- show preferred terms with *
showid -- show phrase ids
NOTES
level is a number then a colon at the start of the phrase
pt is an asterisk then a colon at the start of the phrase
id is a colon, then the id at the end of the phrase
qualify is in parens after a space at the end of the phrase
but before id
example:
preferred term
|
| phrase
| |
| | qualifier
| | |
| | | phraseid
| | | |
V V V V
{*:TURKEY (BIRD):1234}
RETURN
*/
PROCEDURE output_style (
showlevel in boolean default false
, showqualify in boolean default false
, showpt in boolean default false
, showid in boolean default false
);
/*-------------------------------- syn ------------------------------------*/
/*
NAME
syn -- find synonyms of a term
DESCRIPTION
This procedure finds all synonyms of a term, and returns a string
like this: {syn1},{syn2},{syn3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
tname -- thesaurus name (if not specified, system default thes used)
RETURN
see description
*/
function syn(phrase in varchar2,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure syn(restab in out NOCOPY exp_tab,
phrase in varchar2,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- pt ------------------------------------*/
/*
NAME
pt -- find preferred term
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
tname -- thesaurus name (if not specified, system default used)
RETURN
expansion
*/
function pt(phrase in varchar2,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure pt(restab in out NOCOPY exp_tab,
phrase in varchar2,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- tt ------------------------------------*/
/*
NAME
tt -- find top term
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
tname -- thesaurus name (if not specified, system default used)
RETURN
expansion
*/
function tt(phrase in varchar2,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure tt(restab in out NOCOPY exp_tab,
phrase in varchar2,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- rt ------------------------------------*/
/*
NAME
rt -- find related term
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
tname -- thesaurus name (if not specified, system default used)
RETURN
expansion
*/
function rt(phrase in varchar2,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure rt(restab in out NOCOPY exp_tab,
phrase in varchar2,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- bt ------------------------------------*/
/*
NAME
bt -- find broader terms of a phrase
DESCRIPTION
This procedure finds all broader terms of a term, and returns a string
like this: {bt1},{bt2},{bt3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lvl -- how many levels up (i.e. 2 means get the broader terms of
the broader terms of the phrase)
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function bt( phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure bt(restab in out NOCOPY exp_tab,
phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- btp ------------------------------------*/
/*
NAME
btp -- find broader terms (partative) of a phrase
DESCRIPTION
This procedure finds all broader terms of a term, and returns a string
like this: {bt1},{bt2},{bt3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lvl -- how many levels up (i.e. 2 means get the broader terms of
the broader terms of the phrase)
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function btp( phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure btp(restab in out NOCOPY exp_tab,
phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- bti ------------------------------------*/
/*
NAME
bti -- find broader terms (instance) of a phrase
DESCRIPTION
This procedure finds all broader terms of a term, and returns a string
like this: {bt1},{bt2},{bt3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lvl -- how many levels up (i.e. 2 means get the broader terms of
the broader terms of the phrase)
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function bti( phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure bti(restab in out NOCOPY exp_tab,
phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- btg ------------------------------------*/
/*
NAME
btg -- find broader terms (generic) of a phrase
DESCRIPTION
This procedure finds all broader terms of a term, and returns a string
like this: {bt1},{bt2},{bt3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lvl -- how many levels up (i.e. 2 means get the broader terms of
the broader terms of the phrase)
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function btg( phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure btg(restab in out NOCOPY exp_tab,
phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- nt ------------------------------------*/
/*
NAME
nt -- find narrower terms of a phrase
DESCRIPTION
This procedure finds all narrower terms of a term, and returns a string
like this: {nt1},{nt2},{nt3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lvl -- how many levels down (i.e. 2 means get the narrower terms of
the narrower terms of the phrase)
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function nt(phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure nt(restab in out NOCOPY exp_tab,
phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- ntp ------------------------------------*/
/*
NAME
ntp -- find narrower terms (partative) of a phrase
DESCRIPTION
This procedure finds all narrower terms of a term, and returns a string
like this: {nt1},{nt2},{nt3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lvl -- how many levels down (i.e. 2 means get the narrower terms of
the narrower terms of the phrase)
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function ntp(phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure ntp(restab in out NOCOPY exp_tab,
phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- nti ------------------------------------*/
/*
NAME
nti -- find narrower terms (instance) of a phrase
DESCRIPTION
This procedure finds all narrower terms of a term, and returns a string
like this: {nt1},{nt2},{nt3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lvl -- how many levels down (i.e. 2 means get the narrower terms of
the narrower terms of the phrase)
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function nti(phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure nti(restab in out NOCOPY exp_tab,
phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- ntg ------------------------------------*/
/*
NAME
ntg -- find narrower terms (generic) of a phrase
DESCRIPTION
This procedure finds all narrower terms of a term, and returns a string
like this: {nt1},{nt2},{nt3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lvl -- how many levels down (i.e. 2 means get the narrower terms of
the narrower terms of the phrase)
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function ntg(phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure ntg(restab in out NOCOPY exp_tab,
phrase in varchar2,
lvl in number default 1,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- tr ------------------------------------*/
/*
NAME
TR -- find foreign language equivalent
DESCRIPTION
This procedure finds all foreign terms of a term, and returns a string
like this: {ft1},{ft2},{ft3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lang -- language
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function tr(phrase in varchar2,
lang in varchar2 default null,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure tr(restab in out NOCOPY exp_tab,
phrase in varchar2,
lang in varchar2 default null,
tname in varchar2 default 'DEFAULT');
/*-------------------------------- trsyn ----------------------------------*/
/*
NAME
TRSYN -- find foreign language equivalent plus its synonyms and their
foreign language equivalent
DESCRIPTION
This procedure finds all foreign terms of a term and its synonyms and
foreign terms of its synonyms
synonym, and returns a string
like this: {ft1},{ft2},{ft3} ...
ARGUMENTS
restab -- result table (for pl/sql table version)
phrase -- phrase
lang -- language
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function trsyn(phrase in varchar2,
lang in varchar2 default null,
tname in varchar2 default 'DEFAULT') return varchar2;
procedure trsyn(restab in out NOCOPY exp_tab,
phrase in varchar2,
lang in varchar2 default null,
tname in varchar2 default 'DEFAULT');
/*---------------------------------- sn -----------------------------------*/
/*
NAME
SN -- get scope note of phrase
DESCRIPTION
This procedure finds the scope note of the phrase
ARGUMENTS
phrase -- phrase
tname -- thesaurus name (if not specified, system default thes used)
NOTES
RETURN
see description
*/
function sn(phrase in varchar2,
tname in varchar2 default 'DEFAULT') return varchar2;
/*-------------------------------- thes_tt ---------------------------------*/
/*
NAME
THES_TT -- get thesaurus top terms
DESCRIPTION
This procedure finds the top terms of a thesaurus. A top term is defined
as any term which has a narrower term but has no broader terms. This
differs from TT in that TT takes in a phrase and finds the top term for
that phrase, but THES_TT searches the whole thesaurus and finds all
top terms.
ARGUMENTS
restab -- result table
phrase -- phrase
tname -- thesaurus name (if not specified, system default thes used)
NOTES
Since this function searches the whole thesaurus, it can take some
time on large thesauri. It is not recommend to call this often
for such thesauri. Instead, the application should call this once,
store the results in a seperate table, and use those stored results
instead.
*/
procedure thes_tt(restab in out NOCOPY exp_tab,
tname in varchar2 default 'DEFAULT');
/*-------------------------- has_relation ----------------------------------*/
/*
NAME
HAS_RELATION - check to see if a phrase has a relation
DESCRIPTION
Check to see if a phrase has a relation. Valid relations
are 'SYN','SN','TR','RT','BT','BTG','BTP','BTI','NT', 'NTG','NTP',
'NTI', or 'ANY'(meaning any of the above).
ARGUMENTS
phrase -- phrase
rel -- a list of relations separated by commas
tname -- thesaurus name
NOTES
RETURN
TRUE or FALSE
*/
function has_relation(
phrase in varchar2,
rel in varchar2,
tname in varchar2 default 'DEFAULT'
) return boolean;
end ctx_thes;
/
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO