test.lua 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. term = require "volksdata.term"
  2. triple = require "volksdata.triple"
  3. graph = require "volksdata.graph"
  4. store = require "volksdata.store"
  5. namespace = require "volksdata.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/volksdata_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. print("All triples:")
  36. for i in gr1:lookup(t1) do print(i) end
  37. ---[[
  38. print("Terms connected to t1 t2:")
  39. tset = gr1:term_set(t2, triple.POS_P, t1, triple.POS_S)
  40. for t in pairs(tset) do print(t) end
  41. --]]
  42. ---[[
  43. lm = gr1:connections(t1, term.LINK_OUTBOUND)
  44. print("Connections")
  45. for t1, tsiter in pairs(lm) do
  46. for t2 in tsiter do print(t1, t2) end
  47. end
  48. --]]
  49. ---[[
  50. unique_t = gr1:unique_terms(triple.POS_S)
  51. print("Unique subjects")
  52. for t in pairs(unique_t) do print(t) end
  53. print("Unique predicates")
  54. unique_t = gr1:unique_terms(triple.POS_P)
  55. for t in pairs(unique_t) do print(t) end
  56. print("Unique objects")
  57. unique_t = gr1:unique_terms(triple.POS_O)
  58. for t in pairs(unique_t) do print(t) end
  59. --]]
  60. namespace.add("ns1", "urn:ns:1#")
  61. namespace.add("ns2", "urn:ns:2#")
  62. namespace.add("ns3", "urn:ns:3#")
  63. local nsm_map = {}
  64. for k, v in namespace:iter() do nsm_map[k] = v end
  65. assert(nsm_map.ns1 == "urn:ns:1#")
  66. assert(nsm_map.ns2 == "urn:ns:2#")
  67. assert(nsm_map.ns3 == "urn:ns:3#")
  68. local mdb_store_ns = store.new(store.MDB, "file:///tmp/volksdata_nsm.db", true)
  69. mdb_gr2 = graph.new(mdb_store_ns, "ns1:gr2", nsm)
  70. local mdb_gr3 = graph.new(mdb_store_ns, "ns1:gr3", nsm)
  71. local mdb_gr4 = graph.new(mdb_store_ns, "ns1:gr4", nsm)
  72. local mdb_gr5 = graph.new(mdb_store_ns, "ns1:gr5", nsm)
  73. mdb_gr2:add(triples)
  74. mdb_gr3:add(triples)
  75. mdb_gr4:add(triples)
  76. local idx = graph.list(mdb_store_ns)
  77. assert(#idx == 3)
  78. attr = mdb_gr2:attr(t1, t2)
  79. assert (#attr == 3)
  80. assert(attr:contains(term.new_lit("Hola", nil, "es_ES")))
  81. print("Attributes:")
  82. for a in attr:iter() do print(a) end
  83. local gr1_copy = graph.new(mdb_store)
  84. local it = gr1_copy:add_init()
  85. for _, trp in ipairs(triples) do it:add_iter(trp) end
  86. it:add_done()
  87. assert(gr1 == gr1_copy)