TerminusDB provides 17 functions for manipulating RDF rdf:List structures via TerminusDB.WOQL.RDFList.
Overview
RDF lists are linked lists built from rdf:List cons cells. Each cell has:
rdf:first— the element valuerdf:rest— a pointer to the next cell (orrdf:nilfor the empty list)
Reading
Get the first element
import TerminusDB.WOQL
query = and_([
triple("v:List", "rdf:type", iri("rdf:List")),
TerminusDB.WOQL.RDFList.rdflist_peek("v:List", "v:First")
])Get the last element
query = TerminusDB.WOQL.RDFList.rdflist_last("v:List", "v:Last")Get element at position
# 0-indexed
query = TerminusDB.WOQL.RDFList.rdflist_nth0("v:List", 2, "v:Elem")
# 1-indexed
query = TerminusDB.WOQL.RDFList.rdflist_nth1("v:List", 3, "v:Elem")Iterate all elements
# Each element as a separate binding
query = TerminusDB.WOQL.RDFList.rdflist_member("v:List", "v:Elem")
# All elements as an array
query = TerminusDB.WOQL.RDFList.rdflist_list("v:List", "v:Array")Get length
query = TerminusDB.WOQL.RDFList.rdflist_length("v:List", "v:Len")Check if empty
query = TerminusDB.WOQL.RDFList.rdflist_is_empty("v:List")Create an empty list
query = TerminusDB.WOQL.RDFList.rdflist_empty("v:List")Mutation
Push (prepend)
query = TerminusDB.WOQL.RDFList.rdflist_push("v:List", "v:Value", "v:NewHead")Pop (remove first)
query = TerminusDB.WOQL.RDFList.rdflist_pop("v:List", "v:Value")Append
query = TerminusDB.WOQL.RDFList.rdflist_append("v:List", "v:Value")Clear
query = TerminusDB.WOQL.RDFList.rdflist_clear("v:List", "v:NewList")Insert at position
query = TerminusDB.WOQL.RDFList.rdflist_insert("v:List", 1, "v:Value")Drop at position
query = TerminusDB.WOQL.RDFList.rdflist_drop("v:List", 1)Swap elements
query = TerminusDB.WOQL.RDFList.rdflist_swap("v:List", 0, 2)Slice
query = TerminusDB.WOQL.RDFList.rdflist_slice("v:List", 0, 3, "v:Result")Variable safety
All RDFList functions use an internal localize helper that generates
process-unique variable names (e.g., v:RDFList_head_12345) to avoid
collisions with your query's variables.