control triple creation via an 'instead of insert' trigger on vtriples
This commit is contained in:
parent
1ff292f9ba
commit
9350627e9c
5 changed files with 36 additions and 10 deletions
|
|
@ -33,3 +33,9 @@ create or replace function show_text(tid bigint) returns text as $$
|
|||
select text from texts
|
||||
where texts.id = tid;
|
||||
$$ language sql;
|
||||
|
||||
|
||||
create or replace function show_type(tid smallint) returns text as $$
|
||||
select dtname from datatypes dt
|
||||
where dt.id = tid;
|
||||
$$ language sql stable;
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@
|
|||
\i fload.sql
|
||||
\i fshow.sql
|
||||
|
||||
-- create triggers
|
||||
\i tgtriple.sql
|
||||
|
||||
-- load data
|
||||
\i lbase.sql
|
||||
|
|
|
|||
|
|
@ -21,10 +21,8 @@ select load_datatype('int');
|
|||
select load_datatype('decimal');
|
||||
select load_datatype('timestamp');
|
||||
|
||||
-- basic triples: type assignments for
|
||||
-- type -> Property; Property, Class -> Class
|
||||
|
||||
select load_triple('node', 'rdf:type', 'rdf:type', 'node', 'rdf:Property', :event);
|
||||
select load_triple('node', 'rdf:Property', 'rdf:type', 'node', 'rdfs:Class', :event);
|
||||
select load_triple('node', 'rdfs:Class', 'rdf:type', 'node', 'rdfs:Class', :event);
|
||||
select load_triple('node', 'rdfs:label', 'rdf:type', 'node', 'rdfs:Property', :event);
|
||||
insert into vtriples (stname, stext, ptext, otname, otext, creation) values
|
||||
('node', 'rdf:type', 'rdf:type', 'node', 'rdf:Property', :event),
|
||||
('node', 'rdf:Property', 'rdf:type', 'node', 'rdfs:Class', :event),
|
||||
('node', 'rdfs:Class', 'rdf:type', 'node', 'rdfs:Class', :event),
|
||||
('node', 'rdfs:label', 'rdf:type', 'node', 'rdf:Property', :event);
|
||||
|
|
|
|||
16
pgsql/tgtriples.sql
Normal file
16
pgsql/tgtriples.sql
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
|
||||
-- create triggers for triples table
|
||||
|
||||
create or replace function insert_triple() returns trigger as $$
|
||||
declare
|
||||
trid bigint;
|
||||
begin
|
||||
trid := load_triple(new.stname, new.stext, new.ptext,
|
||||
new.otname, new.otext, new.creation);
|
||||
return new;
|
||||
end;
|
||||
$$ language plpgsql;
|
||||
|
||||
|
||||
create trigger insert_triple instead of insert on vtriples
|
||||
for each row execute procedure insert_triple();
|
||||
|
|
@ -3,9 +3,12 @@
|
|||
|
||||
create or replace view vtriples as
|
||||
select triples.id,
|
||||
stype, svalue, show_value(stype, svalue) as stext,
|
||||
predicate, show_value(dt.id, predicate) as ptext,
|
||||
otype, ovalue, show_value(otype, ovalue) as otext,
|
||||
stype, svalue, predicate, otype, ovalue, creation,
|
||||
show_type(stype) as stname,
|
||||
show_value(stype, svalue) as stext,
|
||||
show_value(dt.id, predicate) as ptext,
|
||||
show_type(otype) as otname,
|
||||
show_value(otype, ovalue) as otext,
|
||||
to_char(events.tstamp, 'YYYY-MM-DD HH24:MI:SS') as ts
|
||||
from triples, datatypes dt, events
|
||||
where dtname = 'node'
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue