Ernst-Georg Schmid: Hexastores are easy

Datetime:2016-08-23 02:17:15          Topic: SQL  PostgreSQL           Share

Did you know that you can make a Hexastore from a RDF triple in just one line of SQL? (This needs PostgreSQL 9.4 or better, because of the multi-array unnest)

CREATE OR REPLACE FUNCTION hexify(

IN sub text,

IN pred text,

IN obj text)

RETURNS TABLE(ord text, a text, b text, c text) AS

$$select A.t || B.t || C.t as ord, A.v, B.v, C.v from (select * from unnest(ARRAY[sub, pred, obj],ARRAY['s', 'p', 'o'])) as A(v, t) cross join (select * from unnest(ARRAY[sub, pred, obj],ARRAY['s', 'p', 'o'])) as B(v, t) cross join (select * from unnest(ARRAY[sub, pred, obj],ARRAY['s', 'p', 'o'])) as C(v, t) where a.v != b.v and a.v != c.v and b.v != c.v order by ord desc$$

LANGUAGE sql IMMUTABLE STRICT

COST 100

ROWS 6;

Sometimes, PostgreSQL SQL is just awesome...

More on Hexastores here and here .





About List