test.lua 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. term = require "lsup.term"
  2. triple = require "lsup.triple"
  3. graph = require "lsup.graph"
  4. store = require "lsup.store"
  5. namespace = require "lsup.namespace"
  6. ---[[
  7. t1 = term.new_bnode()
  8. t2 = term.new_iriref("urn:p:11")
  9. t3 = term.new_lit("123", "xsd:int")
  10. t4 = term.new_lit("Hola", nil, "es_ES")
  11. t5 = term.new_lit("مرحبا", nil, "ar_AR")
  12. trp1 = triple.new (
  13. term.new_iriref("urn:s:1"),
  14. term.new_iriref("urn:p:1"),
  15. term.new_lit("hello", nil, "en_US"))
  16. triples = {
  17. trp1,
  18. triple.new (t1, t2, t3),
  19. triple.new (t1, t2, t4),
  20. triple.new (t1, t2, t5),
  21. }
  22. mdb_store = store.new(store.MDB, "file:///tmp/lsup_lua.db", true)
  23. print(("MDB store: %s"):format(mdb_store))
  24. local gr1 = graph.new(mdb_store)
  25. ct = gr1:add(triples)
  26. print("Triples added: " .. ct)
  27. ---[[
  28. local gr2 = graph.new(mdb_store) -- LMDB-backed
  29. local gr3 = graph.new() -- hashmap-backed
  30. gr1:copy(gr2)
  31. gr1:copy(gr3)
  32. assert(gr1 == gr2)
  33. assert(gr1 == gr3)
  34. --]]
  35. for i in gr1:lookup(t1) do print(i) end
  36. ---[[
  37. lm = gr1:connections(t1, term.LINK_OUTBOUND)
  38. print("Connections")
  39. for t1, ts in pairs(lm) do
  40. for t2 in pairs(ts) do print(t1, t2) end
  41. end
  42. unique_t = gr1:unique_terms(triple.POS_S)
  43. print("Unique subjects")
  44. for t in pairs(unique_t) do print(t) end
  45. print("Unique predicates")
  46. unique_t = gr1:unique_terms(triple.POS_P)
  47. for t in pairs(unique_t) do print(t) end
  48. print("Unique objects")
  49. unique_t = gr1:unique_terms(triple.POS_O)
  50. for t in pairs(unique_t) do print(t) end
  51. print("Terms connected to t1 t2:")
  52. tset = gr1:term_set(t2, triple.POS_P, t1, triple.POS_S)
  53. for t in pairs(tset) do print(t) end
  54. --]]
  55. local nsm = namespace.new()
  56. nsm:add("ns1", "urn:ns:1#")
  57. nsm:add("ns2", "urn:ns:2#")
  58. nsm:add("ns3", "urn:ns:3#")
  59. local nsm_map = {}
  60. for k, v in pairs(nsm) do nsm_map[k] = v end
  61. assert(nsm_map.ns1 == "urn:ns:1#")
  62. assert(nsm_map.ns2 == "urn:ns:2#")
  63. assert(nsm_map.ns3 == "urn:ns:3#")
  64. local mdb_store_ns = store.new(store.MDB, "file:///tmp/lsup_nsm.db", true)
  65. mdb_store_ns:nsm_update("ns1", "urn:ns:1#")
  66. mdb_store_ns:nsm_update("ns2", "urn:ns:2#")
  67. mdb_store_ns:nsm_update("ns3", "urn:ns:3#")
  68. local mdb_gr2 = graph.new(mdb_store_ns, "ns1:gr2")
  69. local mdb_gr3 = graph.new(mdb_store_ns, "ns1:gr3")
  70. local mdb_gr4 = graph.new(mdb_store_ns, "ns1:gr4")
  71. local mdb_gr5 = graph.new(mdb_store_ns, "ns1:gr5")
  72. mdb_gr2:add(triples)
  73. mdb_gr3:add(triples)
  74. mdb_gr4:add(triples)
  75. local idx = graph.list(mdb_store_ns)
  76. assert(#idx == 3)