triple.pyx 806 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. from lakesuperior.store.ldp_rs cimport term
  2. cdef int serialize(tuple trp, tpl.tpl_bin *data) except -1:
  3. """
  4. Serialize a triple expressed as a tuple of RDFlib terms.
  5. :param tuple trp: 3-tuple of RDFlib terms.
  6. :rtype: Triple
  7. """
  8. cdef:
  9. Triple strp
  10. tpl.tpl_bin s, p, o
  11. strp.s = s
  12. strp.p = p
  13. strp.o = o
  14. term.serialize(trp[0], &s.addr, &s.sz)
  15. term.serialize(trp[1], &p.addr, &p.sz)
  16. term.serialize(trp[2], &o.addr, &o.sz)
  17. return strp
  18. cdef tuple deserialize(Triple strp):
  19. """
  20. Deserialize a ``Triple`` structure into a tuple of terms.
  21. :rtype: tuple
  22. """
  23. s = term.deserialize(strp.s.addr, strp.s.sz)
  24. p = term.deserialize(strp.p.addr, strp.p.sz)
  25. o = term.deserialize(strp.o.addr, strp.o.sz)
  26. return s, p, o