1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
:- use_module(library(odbc)).
open :-
odbc_connect('WordNet', _,
[ user(jan),
password(geheim),
alias(wordnet),
open(once)
]).
:- dynamic
qid/2.
word(Id, Word) :-
nonvar(Id),
qid(word(+, -), Qid),
!,
odbc_execute(Qid, [Id], row(Word)).
word(Id, Word) :-
nonvar(Word),
qid(word(-, +), Qid),
!,
odbc_execute(Qid, [Word], row(Id)).
word(Id, Word) :-
var(Id),
var(Word),
!,
open,
odbc_query(wordnet, 'SELECT * from word', row(Id, Word)).
word(Id, Word) :-
nonvar(Id),
open,
odbc_prepare(wordnet,
'SELECT (lemma) FROM word WHERE wordno=?',
[ integer
],
Qid),
assert(qid(word(+, -), Qid)),
word(Id, Word).
word(Id, Word) :-
nonvar(Word),
open,
odbc_prepare(wordnet,
'SELECT (wordno) FROM word WHERE lemma=?',
[ default
],
Qid,
[ types([integer])
]),
assert(qid(word(-, +), Qid)),
word(Id, Word).
/*******************************
* TEST *
*******************************/
word_by_query(Id, Word) :-
odbc_prepare(wordnet,
'SELECT (lemma) FROM word WHERE wordno=?',
[ integer
],
Qid),
odbc_execute(Qid, [Id], row(Word)),
odbc_free_statement(Qid).
word_direct(Id, Word) :-
odbc_query(wordnet,
'SELECT (lemma) from word where wordno=~w'-[Id],
row(Word)).
prof_by_query(N) :-
( between(0, N, _),
Id is random(140000),
word_by_query(Id, _),
fail
; true
).
prof_direct(N) :-
( between(0, N, _),
Id is random(140000),
word_direct(Id, _),
fail
; true
).
all_lemmas_1(Words) :-
odbc_query(wordnet,
'select (wordno) from word',
Words,
[ findall(Word, row(Word)),
types([integer])
]).
all_lemmas_2(Words) :-
findall(Word,
odbc_query(wordnet,
'select (wordno) from word',
row(Word),
[ types([integer])
]),
Words).
/*******************************
* PROFILE *
*******************************/
prof_word(N) :-
( between(0, N, _),
Id is random(140000),
% format('wordno = ~w~n', [Id]),
word(Id, _),
fail
; true
).
prof_word2(N) :-
( between(0, N, _),
Id is random(140000),
sformat(SQL, 'SELECT * FROM word WHERE wordno=~w', [Id]),
db_select('WordNet', SQL, tuple(_, _Word)),
% format('~w --> ~w~n', [Id, Word]),
fail
; true
).
|