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
|
select text from texts
|
||||||
where texts.id = tid;
|
where texts.id = tid;
|
||||||
$$ language sql;
|
$$ 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 fload.sql
|
||||||
\i fshow.sql
|
\i fshow.sql
|
||||||
|
|
||||||
|
-- create triggers
|
||||||
|
\i tgtriple.sql
|
||||||
|
|
||||||
-- load data
|
-- load data
|
||||||
\i lbase.sql
|
\i lbase.sql
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,8 @@ select load_datatype('int');
|
||||||
select load_datatype('decimal');
|
select load_datatype('decimal');
|
||||||
select load_datatype('timestamp');
|
select load_datatype('timestamp');
|
||||||
|
|
||||||
-- basic triples: type assignments for
|
insert into vtriples (stname, stext, ptext, otname, otext, creation) values
|
||||||
-- type -> Property; Property, Class -> Class
|
('node', 'rdf:type', 'rdf:type', 'node', 'rdf:Property', :event),
|
||||||
|
('node', 'rdf:Property', 'rdf:type', 'node', 'rdfs:Class', :event),
|
||||||
select load_triple('node', 'rdf:type', 'rdf:type', 'node', 'rdf:Property', :event);
|
('node', 'rdfs:Class', 'rdf:type', 'node', 'rdfs:Class', :event),
|
||||||
select load_triple('node', 'rdf:Property', 'rdf:type', 'node', 'rdfs:Class', :event);
|
('node', 'rdfs:label', 'rdf:type', 'node', 'rdf:Property', :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);
|
|
||||||
|
|
|
||||||
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
|
create or replace view vtriples as
|
||||||
select triples.id,
|
select triples.id,
|
||||||
stype, svalue, show_value(stype, svalue) as stext,
|
stype, svalue, predicate, otype, ovalue, creation,
|
||||||
predicate, show_value(dt.id, predicate) as ptext,
|
show_type(stype) as stname,
|
||||||
otype, ovalue, show_value(otype, ovalue) as otext,
|
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
|
to_char(events.tstamp, 'YYYY-MM-DD HH24:MI:SS') as ts
|
||||||
from triples, datatypes dt, events
|
from triples, datatypes dt, events
|
||||||
where dtname = 'node'
|
where dtname = 'node'
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue