From e9e71a45914a75cd84d473f9dbc2c2a4ce85413d Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 6 Feb 2020 08:54:51 +0100 Subject: [PATCH] initial import --- pgsql/drop_tables.sql | 8 +++ pgsql/init.sql | 119 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 pgsql/drop_tables.sql create mode 100644 pgsql/init.sql diff --git a/pgsql/drop_tables.sql b/pgsql/drop_tables.sql new file mode 100644 index 0000000..adc92da --- /dev/null +++ b/pgsql/drop_tables.sql @@ -0,0 +1,8 @@ +-- drop tables in the correct order, avoiding constraint violations + +drop table triples; +drop table events; +drop table texts; +drop table datatypes; +drop table nodes; +drop table namespaces; diff --git a/pgsql/init.sql b/pgsql/init.sql new file mode 100644 index 0000000..166d48b --- /dev/null +++ b/pgsql/init.sql @@ -0,0 +1,119 @@ +-- tables + +CREATE TABLE namespaces ( + id serial NOT NULL primary key, + iri text NOT NULL, + prefix text +); + +CREATE TABLE nodes ( + id bigserial NOT NULL primary key, + namespace bigint, + name text +); + +CREATE TABLE datatypes ( + id serial NOT NULL primary key, + dtname text NOT NULL, + tablename text, + node bigint +); + +CREATE TABLE events ( + id bigserial NOT NULL primary key, + tstamp timestamp NOT NULL, + node bigint +); + +CREATE TABLE triples ( + id bigserial NOT NULL primary key, + subject bigint NOT NULL, + predicate bigint NOT NULL, + datatype integer NOT NULL, + value bigint, + creation bigint NOT NULL, + deletion bigint +); + +CREATE TABLE texts ( + id bigserial NOT NULL primary key, + language bigint, + text text NOT NULL +); + +ALTER TABLE nodes OWNER TO fco; +ALTER TABLE datatypes OWNER TO fco; +ALTER TABLE namespaces OWNER TO fco; +ALTER TABLE triples OWNER TO fco; +ALTER TABLE texts OWNER TO fco; + +-- data + +INSERT INTO namespaces (iri, prefix) + VALUES ('http://cyberconcepts.org/cco-common#', 'cco'); +INSERT INTO namespaces (iri, prefix) + VALUES ('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdf'); +INSERT INTO namespaces (iri, prefix) + VALUES ('http://www.w3.org/2000/01/rdf-schema#', 'rdfs'); + +INSERT INTO nodes (namespace, name) VALUES (1, 'Node'); -- 1 +INSERT INTO nodes (namespace, name) VALUES (2, 'type'); -- 2 +INSERT INTO nodes (namespace, name) VALUES (2, 'Property');-- 3 +INSERT INTO nodes (namespace, name) VALUES (2, 'Class'); -- 4 +INSERT INTO nodes (namespace, name) VALUES (1, 'Datatype');-- 5 + +INSERT INTO datatypes (dtname, tablename) VALUES ('node', 'nodes'); -- 1 +INSERT INTO datatypes (dtname, tablename) VALUES ('string', 'texts'); -- 2 +INSERT INTO datatypes (dtname) VALUES ('int'); -- 3 + +INSERT INTO triples (subject, predicate, datatype, value) VALUES (1, 2, 1, 5); +INSERT INTO triples (subject, predicate, datatype, value) VALUES (2, 2, 1, 3); +INSERT INTO triples (subject, predicate, datatype, value) VALUES (3, 2, 1, 4); +INSERT INTO triples (subject, predicate, datatype, value) VALUES (4, 2, 1, 4); +INSERT INTO triples (subject, predicate, datatype, value) VALUES (5, 2, 1, 4); + +-- indexes + +CREATE INDEX idx_iri ON namespaces USING btree (iri); +CREATE INDEX idx_prefix ON namespaces USING btree (prefix); + +CREATE INDEX idx_node_name ON nodes USING btree (namespace, name); + +CREATE INDEX fki_datatype_node ON datatypes USING btree (node); + +CREATE INDEX fki_event_node ON events USING btree (node); + +CREATE INDEX fki_datatype ON triples USING btree (datatype); +CREATE INDEX fki_creation ON triples USING btree (creation); +CREATE INDEX fki_deletion ON triples USING btree (deletion); +CREATE INDEX idx_spo ON triples USING btree (subject, predicate, datatype, value); +CREATE INDEX idx_po ON triples USING btree (predicate, datatype, value); +CREATE INDEX idx_os ON triples USING btree (datatype, value, subject); + +CREATE INDEX fki_language ON texts USING btree (language); + +-- foreign key constraints + +ALTER TABLE ONLY nodes + ADD CONSTRAINT namespace FOREIGN KEY (namespace) REFERENCES namespaces(id); + +ALTER TABLE ONLY datatypes + ADD CONSTRAINT node FOREIGN KEY (node) REFERENCES nodes(id); + +ALTER TABLE ONLY events + ADD CONSTRAINT node FOREIGN KEY (node) REFERENCES nodes(id); + +ALTER TABLE ONLY triples + ADD CONSTRAINT subject FOREIGN KEY (subject) REFERENCES nodes(id); +ALTER TABLE ONLY triples + ADD CONSTRAINT predicate FOREIGN KEY (predicate) REFERENCES nodes(id); +ALTER TABLE ONLY triples + ADD CONSTRAINT datatype FOREIGN KEY (datatype) REFERENCES datatypes(id); +ALTER TABLE ONLY triples + ADD CONSTRAINT creation FOREIGN KEY (creation) REFERENCES events(id); +ALTER TABLE ONLY triples + ADD CONSTRAINT deletion FOREIGN KEY (deletion) REFERENCES events(id); + +ALTER TABLE ONLY texts + ADD CONSTRAINT language FOREIGN KEY (language) REFERENCES nodes(id); +