term = require "lsup.term" triple = require "lsup.triple" graph = require "lsup.graph" store = require "lsup.store" namespace = require "lsup.namespace" ---[[ t1 = term.new_bnode() t2 = term.new_iriref("urn:p:11") t3 = term.new_lit("123", "xsd:int") t4 = term.new_lit("Hola", nil, "es_ES") t5 = term.new_lit("مرحبا", nil, "ar_AR") trp1 = triple.new ( term.new_iriref("urn:s:1"), term.new_iriref("urn:p:1"), term.new_lit("hello", nil, "en_US")) triples = { trp1, triple.new (t1, t2, t3), triple.new (t1, t2, t4), triple.new (t1, t2, t5), } mdb_store = store.new(store.MDB, "file:///tmp/lsup_lua.db", true) print(("MDB store: %s"):format(mdb_store)) local gr1 = graph.new(mdb_store) ct = gr1:add(triples) print("Triples added: " .. ct) ---[[ local gr2 = graph.new(mdb_store) -- LMDB-backed local gr3 = graph.new() -- hashmap-backed gr1:copy(gr2) gr1:copy(gr3) assert(gr1 == gr2) assert(gr1 == gr3) --]] for i in gr1:lookup(t1) do print(i) end ---[[ lm = gr1:connections(t1, term.LINK_OUTBOUND) print("Connections") for t1, ts in pairs(lm) do for t2 in pairs(ts) do print(t1, t2) end end unique_t = gr1:unique_terms(triple.POS_S) print("Unique subjects") for t in pairs(unique_t) do print(t) end print("Unique predicates") unique_t = gr1:unique_terms(triple.POS_P) for t in pairs(unique_t) do print(t) end print("Unique objects") unique_t = gr1:unique_terms(triple.POS_O) for t in pairs(unique_t) do print(t) end print("Terms connected to t1 t2:") tset = gr1:term_set(t2, triple.POS_P, t1, triple.POS_S) for t in pairs(tset) do print(t) end --]] local nsm = namespace.new() nsm:add("ns1", "urn:ns:1#") nsm:add("ns2", "urn:ns:2#") nsm:add("ns3", "urn:ns:3#") local nsm_map = {} for k, v in pairs(nsm) do nsm_map[k] = v end assert(nsm_map.ns1 == "urn:ns:1#") assert(nsm_map.ns2 == "urn:ns:2#") assert(nsm_map.ns3 == "urn:ns:3#") local mdb_store_ns = store.new(store.MDB, "file:///tmp/lsup_nsm.db", true) mdb_store_ns:nsm_update("ns1", "urn:ns:1#") mdb_store_ns:nsm_update("ns2", "urn:ns:2#") mdb_store_ns:nsm_update("ns3", "urn:ns:3#") local mdb_gr2 = graph.new(mdb_store_ns, "ns1:gr2") local mdb_gr3 = graph.new(mdb_store_ns, "ns1:gr3") local mdb_gr4 = graph.new(mdb_store_ns, "ns1:gr4") local mdb_gr5 = graph.new(mdb_store_ns, "ns1:gr5") mdb_gr2:add(triples) mdb_gr3:add(triples) mdb_gr4:add(triples) local idx = graph.list(mdb_store_ns) assert(#idx == 3)