diff --git a/examples/cities/pgsql/fload.sql b/examples/cities/pgsql/fload.sql new file mode 100644 index 0000000..17839e3 --- /dev/null +++ b/examples/cities/pgsql/fload.sql @@ -0,0 +1,38 @@ + +-- create functions for loading cities data as triples + +create or replace function load_cities() returns int as $$ +declare + count int := 0; + event bigint := new_event(); + city record; + rkey text; +begin + for city in + select name, regiokey, ckey, inhabitants from cities + where rectype = '60' + --limit 1 + loop + rkey := load_city(city.name, city.regiokey, city.ckey, city.inhabitants, event); + count := count + 1; + end loop; + return count; +end; +$$ language plpgsql; + + +create or replace function load_city( + name text, regiokey text, ckey text, inhabitants int, + event bigint) returns text as $$ +declare + key text := 'xcd:' || regiokey; +begin + insert into vtriples (stname, stext, ptext, otname, otext, creation) values + ('node', key, 'rdf:type', 'node', 'xc:City', event), + ('node', key, 'rdfs:label', 'text', name, event), + ('node', key, 'xc:regiokey', 'text', regiokey, event), + ('node', key, 'xc:ckey', 'text', ckey, event), + ('node', key, 'xc:population', 'int', text(inhabitants), event); + return regiokey; +end; +$$ language plpgsql; diff --git a/examples/cities/pgsql/lmeta.sql b/examples/cities/pgsql/lmeta.sql new file mode 100644 index 0000000..80ed464 --- /dev/null +++ b/examples/cities/pgsql/lmeta.sql @@ -0,0 +1,18 @@ + +-- load metadata triples for cities example project + +select load_namespace('http://cyberconcepts.org/cco-example/cities#', 'xc'); +select load_namespace('http://cyberconcepts.org/cco-example/cities_data#', 'xcd'); + +select new_event() as event +\gset + +insert into vtriples (stname, stext, ptext, otname, otext, creation) values + ('node', 'xc:City', 'rdf:type', 'node', 'rdfs:Class', :event), + ('node', 'xc:District', 'rdf:type', 'node', 'rdfs:Class', :event), + ('node', 'xc:FedCountry', 'rdf:type', 'node', 'rdfs:Class', :event), + ('node', 'xc:regiokey', 'rdf:type', 'node', 'rdf:Property', :event), + ('node', 'xc:ckey', 'rdf:type', 'node', 'rdf:Property', :event), + ('node', 'xc:population', 'rdf:type', 'node', 'rdf:Property', :event); + +-- property name -> rdfs:label diff --git a/pgsql/lbase.sql b/pgsql/lbase.sql index 92db7e7..aa32e94 100644 --- a/pgsql/lbase.sql +++ b/pgsql/lbase.sql @@ -1,11 +1,6 @@ -- load base data -select new_event() as event -\gset - --- load data - select load_namespace('http://cyberconcepts.org/cco-blank#', '_'); select load_namespace('http://cyberconcepts.org/cco-common#', 'cco'); select load_namespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdf'); @@ -21,8 +16,13 @@ select load_datatype('int'); select load_datatype('decimal'); select load_datatype('timestamp'); +select new_event() as event +\gset + 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); + ('node', 'rdfs:label', 'rdf:type', 'node', 'rdf:Property', :event), + ('node', 'rdfs:domain', 'rdf:type', 'node', 'rdf:Property', :event), + ('node', 'rdfs:range', 'rdf:type', 'node', 'rdf:Property', :event); diff --git a/pgsql/tgtriples.sql b/pgsql/tgtriples.sql index 7571629..31346e3 100644 --- a/pgsql/tgtriples.sql +++ b/pgsql/tgtriples.sql @@ -2,13 +2,13 @@ -- 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; +declare + trid bigint; +begin + trid := load_triple(new.stname, new.stext, new.ptext, + new.otname, new.otext, new.creation); + return new; +end; $$ language plpgsql;