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;
SELECT * FROM hexify('subject','predicate','object');
Sometimes, PostgreSQL SQL is just awesome...
More on Hexastores here and here.