Arrays, Lists and Sequences in RDF


This topic is based on an initial discussion I had with Adrian Gschwend on Monday July 1, 2019.

for further details see:,_Lists_and_Sequences_in_RDF

(this page will change and expand over time)

Basic question is how to deal with large set of of data sequences/series in RDF.


You may want to post to

I think you should first define the (abstract) operations required of a list. Eg you should be able to find quickly all lists that have a given member, I don’t think any opaque literal will work very well, unless you have special indexing (as eg GeoSPARQL engines do for geo:WKTLiteral etc).

Please use a custom datatype to mark your custom literals.


rdf:List should be used as reference as rdf:Bag and rdf:Seq got almost completely replaced by it.

@neumarcx your proposal works for very specific use cases. WKT, like mentioned by @VladimirAlexiev, could be one of it. But I would use a datatype with the literal. It will cause a lot of problems as a generic solution. Actually you are introducing a new RDF serialization. All tools which have to handle the data have to understand it.

A better generic solution would be rdf:List access by index in SPARQL. @VladimirAlexiev also mentioned already the right place to start a discussion about it.

Depending on the use case, it can be even simpler. I have a lot of time series data in data cubes. The timestamps allow me to sort and slice it in SPARQL in the way I need it.


not ready for the SPARQL group. I have already introduced this to a customer and they as expected love the succinct syntax for their use case. I am going to hold back on a public release for now. to further discuss the issue here.

I can live with a datatype and will add them to the pseudo code on the example.

what do you think about this Microsoft Server example here:

btw since I have developed the GeoSPARQL service for Jena I am quite familiar with the WKT notation :wink: and like the notation.

On the other hand I am currently missing out on some of the very nice data cube goodies mentioned above. wonder if there is an elegant way to create symbiosis between the WKT and data cubes.


Serializing an array into a literal is only useful for very specific use cases. Cause I don’t know your use case, I can’t say if it fits or not. Also I doubt it’s something for the SPARQL group. If the group simplifies array access, I expect it will be for rdf:List.

Here an example of an observation which contains population, date and location. If you follow the raum and hasGeometry, you can find the WKT data.