26
26
from .termutils import constructGraph
27
27
from .termutils import type2TermCombination
28
28
from .termutils import statement2TermCombination
29
+ from . import __version__
29
30
30
31
if PY3 :
31
32
from functools import reduce
@@ -168,13 +169,14 @@ def unionSELECT(selectComponents, distinct=False, selectType=TRIPLE_SELECT):
168
169
selectClause = table .select (whereClause )
169
170
elif tableType == ASSERTED_TYPE_PARTITION :
170
171
selectClause = expression .select (
171
- [table .c .member .label ('subject' ),
172
+ [table .c .id .label ('id' ),
173
+ table .c .member .label ('subject' ),
172
174
expression .literal (str (RDF .type ) if PY3 else unicode (RDF .type )).label ('predicate' ),
173
175
table .c .klass .label ('object' ),
174
176
table .c .context .label ('context' ),
175
177
table .c .termComb .label ('termcomb' ),
176
178
expression .literal_column ("NULL" ).label ('objlanguage' ),
177
- expression .literal_column ("NULL" ).label ('objdatatype' )],
179
+ expression .literal_column ("NULL" ).label ('objdatatype' )][ 1 if __version__ <= '0.2' else 0 :] ,
178
180
whereClause )
179
181
elif tableType == ASSERTED_NON_TYPE_PARTITION :
180
182
selectClause = expression .select (
@@ -205,14 +207,25 @@ def extractTriple(tupleRt, store, hardCodedContext=None):
205
207
converts it to a tuple of terms using the termComb integer
206
208
to interpret how to instantiate each term
207
209
"""
208
- try :
209
- subject , predicate , obj , rtContext , termComb , \
210
- objLanguage , objDatatype = tupleRt
211
- termCombString = REVERSE_TERM_COMBINATIONS [termComb ]
212
- subjTerm , predTerm , objTerm , ctxTerm = termCombString
213
- except ValueError :
214
- subject , subjTerm , predicate , predTerm , obj , objTerm , \
215
- rtContext , ctxTerm , objLanguage , objDatatype = tupleRt
210
+ if __version__ <= "0.2" :
211
+ try :
212
+ subject , predicate , obj , rtContext , termComb , \
213
+ objLanguage , objDatatype = tupleRt
214
+ termCombString = REVERSE_TERM_COMBINATIONS [termComb ]
215
+ subjTerm , predTerm , objTerm , ctxTerm = termCombString
216
+ except ValueError :
217
+ subject , subjTerm , predicate , predTerm , obj , objTerm , \
218
+ rtContext , ctxTerm , objLanguage , objDatatype = tupleRt
219
+ else :
220
+ try :
221
+ id , subject , predicate , obj , rtContext , termComb , \
222
+ objLanguage , objDatatype = tupleRt
223
+ termCombString = REVERSE_TERM_COMBINATIONS [termComb ]
224
+ subjTerm , predTerm , objTerm , ctxTerm = termCombString
225
+ except ValueError :
226
+ id , subject , subjTerm , predicate , predTerm , obj , objTerm , \
227
+ rtContext , ctxTerm , objLanguage , objDatatype = tupleRt
228
+
216
229
context = rtContext is not None \
217
230
and rtContext \
218
231
or hardCodedContext .identifier
@@ -221,7 +234,10 @@ def extractTriple(tupleRt, store, hardCodedContext=None):
221
234
o = createTerm (obj , objTerm , store , objLanguage , objDatatype )
222
235
223
236
graphKlass , idKlass = constructGraph (ctxTerm )
224
- return s , p , o , (graphKlass , idKlass , context )
237
+ if __version__ <= "0.2" :
238
+ return s , p , o , (graphKlass , idKlass , context )
239
+ else :
240
+ return id , s , p , o , (graphKlass , idKlass , context )
225
241
226
242
227
243
def createTerm (
@@ -881,8 +897,12 @@ class membership columns: member,klass,context termComb
881
897
result = res .fetchall ()
882
898
tripleCoverage = {}
883
899
for rt in result :
884
- s , p , o , (graphKlass , idKlass , graphId ) = \
885
- extractTriple (rt , self , context )
900
+ if __version__ <= "0.2" :
901
+ s , p , o , (graphKlass , idKlass , graphId ) = \
902
+ extractTriple (rt , self , context )
903
+ else :
904
+ id , s , p , o , (graphKlass , idKlass , graphId ) = \
905
+ extractTriple (rt , self , context )
886
906
contexts = tripleCoverage .get ((s , p , o ), [])
887
907
contexts .append (graphKlass (self , idKlass (graphId )))
888
908
tripleCoverage [(s , p , o )] = contexts
@@ -1214,6 +1234,7 @@ def __create_table_definitions(self):
1214
1234
'asserted_statements' :
1215
1235
Table (
1216
1236
'%s_asserted_statements' % self ._internedId , self .metadata ,
1237
+ Column ('id' , types .Integer , nullable = False , primary_key = True ),
1217
1238
Column ('subject' , TermType , nullable = False ),
1218
1239
Column ('predicate' , TermType , nullable = False ),
1219
1240
Column ('object' , TermType , nullable = False ),
@@ -1228,6 +1249,7 @@ def __create_table_definitions(self):
1228
1249
Index ("%s_A_c_index" % self ._internedId , 'context' , mysql_length = MYSQL_MAX_INDEX_LENGTH )),
1229
1250
'type_statements' :
1230
1251
Table ('%s_type_statements' % self ._internedId , self .metadata ,
1252
+ Column ('id' , types .Integer , nullable = False , primary_key = True ),
1231
1253
Column ('member' , TermType , nullable = False ),
1232
1254
Column ('klass' , TermType , nullable = False ),
1233
1255
Column ('context' , TermType , nullable = False ),
@@ -1241,6 +1263,7 @@ def __create_table_definitions(self):
1241
1263
'literal_statements' :
1242
1264
Table (
1243
1265
'%s_literal_statements' % self ._internedId , self .metadata ,
1266
+ Column ('id' , types .Integer , nullable = False , primary_key = True ),
1244
1267
Column ('subject' , TermType , nullable = False ),
1245
1268
Column ('predicate' , TermType , nullable = False ),
1246
1269
Column ('object' , TermType ),
@@ -1259,6 +1282,7 @@ def __create_table_definitions(self):
1259
1282
'quoted_statements' :
1260
1283
Table (
1261
1284
"%s_quoted_statements" % self ._internedId , self .metadata ,
1285
+ Column ('id' , types .Integer , nullable = False , primary_key = True ),
1262
1286
Column ('subject' , TermType , nullable = False ),
1263
1287
Column ('predicate' , TermType , nullable = False ),
1264
1288
Column ('object' , TermType ),
@@ -1283,7 +1307,11 @@ def __create_table_definitions(self):
1283
1307
Column ('uri' , types .Text ),
1284
1308
Index ("%s_uri_index" % self ._internedId , 'uri' , mysql_length = MYSQL_MAX_INDEX_LENGTH ))
1285
1309
}
1286
-
1310
+ if __version__ > "0.2" :
1311
+ for table in ['type_statements' , 'literal_statements' ,
1312
+ 'quoted_statements' , 'asserted_statements' ]:
1313
+ self .tables [table ].append_column (
1314
+ Column ('id' , types .Integer , nullable = False , primary_key = True ))
1287
1315
1288
1316
table_name_prefixes = [
1289
1317
'%s_asserted_statements' ,
0 commit comments