Although triples can in principle express anything (well anything computational), this does not mean they are particularly appropriate for everything ((see also previous posts on “It-ness and identity: FOAF, RDF and RDMS” and “digging ourselves back from the Semantic Web mire“)).
RDF sequences are one of the most basic structured types and I have always found the use of rdf:_1, rdf:_2 at best clunky. In particular I don’t like the fact that the textual form embodies the meaning.
In the RDF schema, rdf:_1, rdf:_2, etc are all instances of the class rdfs:ContainerMembershipProperty and sub-properties of rdfs:member. However, I was also looking to see if there was some (implicitly defined) property of each of them that said which index they represented. For example:
<rdf:_3> <rdf:isSequenceNumber> “3”
This would mean that the fact that rdf:_3 corresponded to the third element in a sequence was expressed semantically by rdf:isSequenceNumber as well as lexically in the label “_3”.
Sadly I could find no mention of this or any alternative technique to give the rdf:_nnn properties explicit semantics 🙁
This is not just me being a purist, having explicit semantics makes it possible to express queries such as gathering together contiguous pairs in a sequence:
<ex:a> ?r1 ?a.
<ex:a> ?r2 ?b.
?r1 <rdf:hasSequenceNumber> ?index.
?r2 <rdf:hasSequenceNumber> ?index + 1.
Without explicit semantics, this would need to be expressed using string concatenation to create the labels for the relations – yuck!
Have I missed something? Is there an alternative mechanism in the RDF world that is like this or better?
Mind you I don’t see what’s wrong with a[index] … but may be that is just too simple?






