@@ -123,11 +123,27 @@ def save_element(self, e, node=None):
123
123
elif isinstance (fmt , Property .__class__ ) and \
124
124
k == 'value' and len (getattr (e , k )) > 0 :
125
125
values = getattr (e , k )
126
- bag = URIRef (odmlns + str (uuid .uuid4 ()))
127
- self .g .add ((bag , RDF .type , RDF .Bag ))
128
- self .g .add ((curr_node , fmt .rdf_map (k ), bag ))
126
+ seq = URIRef (odmlns + str (uuid .uuid4 ()))
127
+ self .g .add ((seq , RDF .type , RDF .Seq ))
128
+ self .g .add ((curr_node , fmt .rdf_map (k ), seq ))
129
+ # rdflib so far does not respect RDF:li item order
130
+ # in RDF:Seq on loading so we have to use custom
131
+ # numbered Node elements for now. Once rdflib upgrades
132
+ # this should be reversed to RDF:li again!
133
+ # see https://github.com/RDFLib/rdflib/issues/280
134
+ # -- keep until supported
135
+ # bag = URIRef(odmlns + str(uuid.uuid4()))
136
+ # self.g.add((bag, RDF.type, RDF.Bag))
137
+ # self.g.add((curr_node, fmt.rdf_map(k), bag))
138
+ # for v in values:
139
+ # self.g.add((bag, RDF.li, Literal(v)))
140
+
141
+ counter = 1
129
142
for v in values :
130
- self .g .add ((bag , RDF .li , Literal (v )))
143
+ pred = "%s_%s" % (str (RDF ), counter )
144
+ self .g .add ((seq , URIRef (pred ), Literal (v )))
145
+ counter = counter + 1
146
+
131
147
# adding entities' properties
132
148
else :
133
149
val = getattr (e , k )
0 commit comments