RDF defines a dictionary for collections and containers, but they do not have much meaning in terms of interpreting the graphs containing them. They are not intended and are not suitable for representing ambiguous properties.
Generally speaking:
:A :predicate [ a rdf:Alt ; rdf:_1 :B ; rdf:_2 :C ] .
Not equivalent
:A :predicate :B , :C .
Say the predicate is an owl: sameAs:
:A owl:sameAs [ a rdf:Alt ; rdf:_1 :B ; rdf:_2 :C ] .
It is said above that: Individual names containing: B and: C, whereas:
:A owl:sameAs :B , :C .
says that: A ,: B and: C are the same.
SPARQL is independent of containers and collections (except for the syntax reduction for rdf: List). If you need a more convenient way to work with collections, many RDF APIs, including Jena and rdflib, have first-class views for them.
Adding
A method for modeling multi-valued properties, i.e. to simulate that both "Example n ° 1" @fr and "Example # 1" @en are labels for urn: 1 is just two facts:
<rdf:Description rdf:about="urn:1"> <rdfs:label xml:lang="fr">Exemple n°1</rdfs:label> <rdfs:label xml:lang="en">Example #1</rdfs:label> ... </rdf:Description>
And request:
SELECT ?res WHERE { ?res rdfs:label ?label . FILTER ( contains(?label, 'Example'@en) ) }
will match the English labels for <urn: 1> and <urn: 2>.
For the my: release property, where you have a multi-valued property and the order of its values, this is a bit more complicated. You can define a new property (for example) my: releases, whose value is rdf: List or rdf: Seq. my: release gives a direct relationship, and my: releases an indirect relationship indicating explicit ordering. With the output repository and the corresponding rule, you only need to provide the latter. Unfortunately, this does not facilitate the use of the order in SPARQL.
An approach that is easier to work in and without SPARQL repositories would be to make the versions themselves objects with properties that determine the order:
<rdf:Description rdf:about="urn:1"> <rdfs:label xml:lang="fr">Exemple n°1</rdfs:label> <rdfs:label xml:lang="en">Example #1</rdfs:label> <my:release> <my:Release> <dc:issued rdf:datatype="&xsd;date">2008-10-10/dc:issued> <my:version>10.0</my:version> </my:Release> </my:release> <my:release> <my:Release> <my:version>2.4</my:version> <dc:issued rdf:datatype="&xsd;date">2007-05-01</dc:issued> </my:Release> </my:release> ... </rdf:Description>
In the above example, the date can be used to organize the results, since there is no explicit sequence. The query is a bit more complicated:
SELECT ?ver WHERE { <urn:1> my:release [ my:version ?ver ; dc:issued ?date ] } ORDER BY ?date