more flexible triple concept with polymorphic subjects
This commit is contained in:
parent
e9e71a4591
commit
6a947f1ed6
2 changed files with 57 additions and 54 deletions
|
|
@ -1,8 +1,8 @@
|
|||
-- drop tables in the correct order, avoiding constraint violations
|
||||
|
||||
drop table texts;
|
||||
drop table triples;
|
||||
drop table events;
|
||||
drop table texts;
|
||||
drop table datatypes;
|
||||
drop table nodes;
|
||||
drop table datatypes;
|
||||
drop table namespaces;
|
||||
|
|
|
|||
107
pgsql/init.sql
107
pgsql/init.sql
|
|
@ -6,31 +6,30 @@ CREATE TABLE namespaces (
|
|||
prefix text
|
||||
);
|
||||
|
||||
CREATE TABLE datatypes (
|
||||
id smallserial NOT NULL primary key,
|
||||
dtname text NOT NULL,
|
||||
tablename 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
|
||||
tstamp timestamp NOT NULL // ??? better timestamptz?
|
||||
);
|
||||
|
||||
CREATE TABLE triples (
|
||||
id bigserial NOT NULL primary key,
|
||||
subject bigint NOT NULL,
|
||||
stype smallint NOT NULL,
|
||||
svalue bigint NOT NULL,
|
||||
predicate bigint NOT NULL,
|
||||
datatype integer NOT NULL,
|
||||
value bigint,
|
||||
otype smallint NOT NULL,
|
||||
ovalue bigint,
|
||||
creation bigint NOT NULL,
|
||||
deletion bigint
|
||||
);
|
||||
|
|
@ -41,36 +40,48 @@ CREATE TABLE texts (
|
|||
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;
|
||||
ALTER TABLE nodes OWNER TO cco;
|
||||
ALTER TABLE datatypes OWNER TO cco;
|
||||
ALTER TABLE namespaces OWNER TO cco;
|
||||
ALTER TABLE triples OWNER TO cco;
|
||||
ALTER TABLE events OWNER TO cco;
|
||||
ALTER TABLE texts OWNER TO cco;
|
||||
|
||||
-- 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 events (tstamp) values (transaction_timestamp());
|
||||
|
||||
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 namespaces (iri, prefix)
|
||||
VALUES ('http://cyberconcepts.org/cco-common#', 'cco'); -- 1
|
||||
INSERT INTO namespaces (iri, prefix)
|
||||
VALUES ('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdf'); -- 2
|
||||
INSERT INTO namespaces (iri, prefix)
|
||||
VALUES ('http://www.w3.org/2000/01/rdf-schema#', 'rdfs'); -- 3
|
||||
|
||||
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 datatypes (dtname, tablename) VALUES ('namespace', 'namespaces'); -- 1
|
||||
INSERT INTO datatypes (dtname, tablename) VALUES ('node', 'nodes'); -- 2
|
||||
INSERT INTO datatypes (dtname, tablename) VALUES ('datatype', 'datatypes'); -- 3
|
||||
INSERT INTO datatypes (dtname, tablename) VALUES ('event', 'events'); -- 4
|
||||
INSERT INTO datatypes (dtname, tablename) VALUES ('triple', 'triples'); -- 5
|
||||
INSERT INTO datatypes (dtname, tablename) VALUES ('text', 'texts'); -- 6
|
||||
INSERT INTO datatypes (dtname) VALUES ('int'); -- 7
|
||||
INSERT INTO datatypes (dtname) VALUES ('float'); -- 8
|
||||
INSERT INTO datatypes (dtname) VALUES ('decimal'); -- 9
|
||||
INSERT INTO datatypes (dtname) VALUES ('timestamp'); -- 10
|
||||
|
||||
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);
|
||||
INSERT INTO nodes (namespace, name) VALUES (2, 'type'); -- 1
|
||||
INSERT INTO nodes (namespace, name) VALUES (2, 'Property');-- 2
|
||||
INSERT INTO nodes (namespace, name) VALUES (3, 'Class'); -- 3
|
||||
|
||||
-- basic triples: type assignments for
|
||||
-- type -> Property; Property, Class -> Class
|
||||
|
||||
INSERT INTO triples (stype, svalue, predicate, otype, ovalue, creation)
|
||||
VALUES (2, 1, 2, 2, 2, 1);
|
||||
INSERT INTO triples (stype, svalue, predicate, otype, ovalue, creation)
|
||||
VALUES (2, 2, 2, 2, 3, 1);
|
||||
INSERT INTO triples (stype, svalue, predicate, otype, ovalue, creation)
|
||||
VALUES (2, 3, 2, 2, 3, 1);
|
||||
|
||||
-- indexes
|
||||
|
||||
|
|
@ -79,16 +90,14 @@ 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_stype ON triples USING btree (stype);
|
||||
CREATE INDEX fki_otype ON triples USING btree (otype);
|
||||
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 idx_spo ON triples USING btree
|
||||
(stype, svalue, predicate, otype, ovalue);
|
||||
CREATE INDEX idx_po ON triples USING btree (predicate, otype, ovalue);
|
||||
CREATE INDEX idx_os ON triples USING btree (otype, ovalue, stype, svalue);
|
||||
|
||||
CREATE INDEX fki_language ON texts USING btree (language);
|
||||
|
||||
|
|
@ -97,18 +106,12 @@ CREATE INDEX fki_language ON texts USING btree (language);
|
|||
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);
|
||||
ADD CONSTRAINT stype FOREIGN KEY (stype) REFERENCES datatypes(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);
|
||||
ADD CONSTRAINT otype FOREIGN KEY (otype) REFERENCES datatypes(id);
|
||||
ALTER TABLE ONLY triples
|
||||
ADD CONSTRAINT creation FOREIGN KEY (creation) REFERENCES events(id);
|
||||
ALTER TABLE ONLY triples
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue