#ifndef _TEST_ASSETS_TRIPLES_H #define _TEST_ASSETS_TRIPLES_H #include "volksdata/term.h" #define NUM_TRP 10 /* * This results in the following set: * . * . * . * . * "String 1" . * "String 1"^^ . * "String 1"@es-ES . * "String 1"^^ . */ VOLK_Triple **create_triples() { VOLK_nsmap_add ("ns1", "urn:s:"); VOLK_nsmap_add ("ns2", "urn:p:"); VOLK_Term *s0 = VOLK_iriref_new ("urn:s:0"), *s5 = VOLK_iriref_new_ns ("ns1:0"), *p2 = VOLK_iriref_new ("urn:p:2"), *p4 = VOLK_iriref_new_ns ("ns2:2"), *o5 = VOLK_literal_new ( "String 1", VOLK_iriref_new ("urn:mydatatype:string")); VOLK_Triple **trp = calloc (sizeof (*trp), NUM_TRP + 1); trp[0] = VOLK_triple_new ( s0, VOLK_iriref_new ("urn:p:0"), VOLK_iriref_new ("urn:o:0")); trp[1] = VOLK_triple_new ( VOLK_iriref_new ("urn:s:1"), VOLK_iriref_new ("urn:p:1"), VOLK_iriref_new ("urn:o:1")); trp[2] = VOLK_triple_new ( VOLK_iriref_new ("urn:s:2"), p2, VOLK_iriref_new ("urn:o:2")); trp[3] = VOLK_triple_new ( VOLK_iriref_new ("urn:s:0"), VOLK_iriref_new ("urn:p:1"), VOLK_iriref_new ("urn:o:2")); trp[4] = VOLK_triple_new ( VOLK_iriref_new ("urn:s:0"), p4, VOLK_literal_new ("String 1", NULL)); trp[5] = VOLK_triple_new (s5, VOLK_iriref_new ("urn:p:5"), o5); trp[6] = VOLK_triple_new ( VOLK_iriref_new ("urn:s:1"), VOLK_iriref_new ("urn:p:6"), VOLK_lt_literal_new ("String 1", "es-ES")); // Unique triple from reused pointers. Do not double-free. trp[7] = VOLK_triple_new (s0, p2, o5); // Duplicate of trp[7]. Do not double-free. trp[8] = VOLK_triple_new (s0, p2, o5); // Duplicate of trp[7] from different reused terms but semantically // identical. Do not double-free. trp[9] = VOLK_triple_new (s5, p4, o5); return trp; } void free_triples (VOLK_Triple **trp) { // Last three triples are second pointers. for (int i=0; i < NUM_TRP - 3; i++) VOLK_triple_free (trp[i]); free (trp[7]); free (trp[8]); free (trp[9]); free(trp); } #endif /* _TEST_ASSETS_TRIPLES_H */