triples.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef _TEST_ASSETS_TRIPLES_H
  2. #define _TEST_ASSETS_TRIPLES_H
  3. #include "term.h"
  4. #define NUM_TRP 10
  5. /*
  6. * This results in the following set:
  7. * <urn:s:0> <urn:p:0> <urn:o:0> .
  8. * <urn:s:1> <urn:p:1> <urn:o:1> .
  9. * <urn:s:2> <urn:p:2> <urn:o:2> .
  10. * <urn:s:0> <urn:p:1> <urn:o:2> .
  11. * <urn:s:0> <urn:p:2> "String 1" .
  12. * <urn:s:0> <urn:p:5> "String 1"^^<urn:mydatatype:string> .
  13. * <urn:s:1> <urn:p:6> "String 1"@es-ES .
  14. * <urn:s:0> <urn:p:2> "String 1"^^<urn:mydatatype:string> .
  15. */
  16. LSUP_Triple **create_triples()
  17. {
  18. LSUP_NSMap *nsm = LSUP_nsmap_new ();
  19. LSUP_nsmap_add (nsm, "ns1", "urn:s:");
  20. LSUP_nsmap_add (nsm, "ns2", "urn:p:");
  21. LSUP_Term
  22. *s0 = LSUP_iriref_new ("urn:s:0", NULL),
  23. *s5 = LSUP_iriref_new ("ns1:0", nsm),
  24. *p2 = LSUP_iriref_new ("urn:p:2", NULL),
  25. *p4 = LSUP_iriref_new ("ns2:2", nsm),
  26. *o5 = LSUP_literal_new (
  27. "String 1",
  28. LSUP_iriref_new ("urn:mydatatype:string", NULL));
  29. LSUP_Triple **trp = calloc (sizeof (*trp), NUM_TRP + 1);
  30. trp[0] = LSUP_triple_new (
  31. s0,
  32. LSUP_iriref_new ("urn:p:0", NULL),
  33. LSUP_iriref_new ("urn:o:0", NULL));
  34. trp[1] = LSUP_triple_new (
  35. LSUP_iriref_new ("urn:s:1", NULL),
  36. LSUP_iriref_new ("urn:p:1", NULL),
  37. LSUP_iriref_new ("urn:o:1", NULL));
  38. trp[2] = LSUP_triple_new (
  39. LSUP_iriref_new ("urn:s:2", NULL),
  40. p2,
  41. LSUP_iriref_new ("urn:o:2", NULL));
  42. trp[3] = LSUP_triple_new (
  43. LSUP_iriref_new ("urn:s:0", NULL),
  44. LSUP_iriref_new ("urn:p:1", NULL),
  45. LSUP_iriref_new ("urn:o:2", NULL));
  46. trp[4] = LSUP_triple_new (
  47. LSUP_iriref_new ("urn:s:0", NULL),
  48. p4,
  49. LSUP_literal_new ("String 1", NULL));
  50. trp[5] = LSUP_triple_new (s5, LSUP_iriref_new ("urn:p:5", NULL), o5);
  51. trp[6] = LSUP_triple_new (
  52. LSUP_iriref_new ("urn:s:1", NULL),
  53. LSUP_iriref_new ("urn:p:6", NULL),
  54. LSUP_lt_literal_new ("String 1", "es-ES"));
  55. // Unique triple from reused pointers. Do not double-free.
  56. trp[7] = LSUP_triple_new (s0, p2, o5);
  57. // Duplicate of trp[7]. Do not double-free.
  58. trp[8] = LSUP_triple_new (s0, p2, o5);
  59. // Duplicate of trp[7] from different reused terms but semantically
  60. // identical. Do not double-free.
  61. trp[9] = LSUP_triple_new (s5, p4, o5);
  62. return trp;
  63. }
  64. void free_triples (LSUP_Triple **trp)
  65. {
  66. LSUP_nsmap_free (LSUP_iriref_nsm (trp[4]->p));
  67. // Last three triples are second pointers.
  68. for (int i=0; i < NUM_TRP - 3; i++)
  69. LSUP_triple_free (trp[i]);
  70. free (trp[7]);
  71. free (trp[8]);
  72. free (trp[9]);
  73. free(trp);
  74. }
  75. #endif /* _TEST_ASSETS_TRIPLES_H */