# Copyright 2011 Epimorphics Ltd # License: CC3.0: http://creativecommons.org/licenses/by/3.0 PREFIX : PREFIX rdf: INSERT DATA { :x3 :p (1 2 3) . :x3 :p "other" . :x2 :p (1 2) . :x2 :p "other" . :x1 :p (1) . :x1 :p "other" . :x0 :p () . :x0 :p "other" . } ; # List of length 1 # Do before other lists. DELETE { ?x :p ?elt . ?elt rdf:first ?v . ?elt rdf:rest rdf:nil . } INSERT { ?x :p rdf:nil . } WHERE { ?x :p ?elt . ?elt rdf:first ?v ; rdf:rest rdf:nil . } ; # List of length >= 2 DELETE { ?elt1 rdf:rest ?elt . ?elt rdf:first ?v . ?elt rdf:rest rdf:nil . } INSERT { ?elt1 rdf:rest rdf:nil } WHERE { ?x :p ?list . ?list rdf:rest* ?elt1 . # Second to end. ?elt1 rdf:rest ?elt . # End. ?elt rdf:first ?v ; rdf:rest rdf:nil . }