1
- from rdflib .graph import Graph , QuotedGraph
2
- from rdflib .term import Node
3
- from six import text_type
4
1
from sqlalchemy import Column , Table , Index , types
5
2
3
+ from rdflib_sqlalchemy .types import TermType
4
+
6
5
7
6
MYSQL_MAX_INDEX_LENGTH = 200
8
7
9
8
TABLE_NAME_TEMPLATES = [
10
- "{}_asserted_statements" ,
11
- "{}_type_statements" ,
12
- "{}_quoted_statements " ,
13
- "{}_namespace_binds " ,
14
- "{}_literal_statements"
9
+ "{interned_id }_asserted_statements" ,
10
+ "{interned_id}_literal_statements"
11
+ "{interned_id}_namespace_binds " ,
12
+ "{interned_id}_quoted_statements " ,
13
+ "{interned_id}_type_statements" ,
15
14
]
16
15
17
16
18
- class TermType (types .TypeDecorator ):
19
- """Term typology."""
20
-
21
- impl = types .Text
22
-
23
- def process_bind_param (self , value , dialect ):
24
- """Process bound parameters."""
25
- if isinstance (value , (QuotedGraph , Graph )):
26
- return text_type (value .identifier )
27
- elif isinstance (value , Node ):
28
- return text_type (value )
29
- else :
30
- return value
31
-
32
-
33
17
def create_asserted_statements_table (interned_id , metadata ):
34
18
return Table (
35
- "{}_asserted_statements" .format (interned_id ),
19
+ "{interned_id }_asserted_statements" .format (interned_id = interned_id ),
36
20
metadata ,
37
21
Column ("id" , types .Integer , nullable = False , primary_key = True ),
38
22
Column ("subject" , TermType , nullable = False ),
39
23
Column ("predicate" , TermType , nullable = False ),
40
24
Column ("object" , TermType , nullable = False ),
41
25
Column ("context" , TermType , nullable = False ),
42
26
Column ("termcomb" , types .Integer , nullable = False , key = "termComb" ),
43
- Index ("{}_A_termComb_index" .format (interned_id ), "termComb" ),
44
- Index ("{}_A_s_index" .format (interned_id ), "subject" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
45
- Index ("{}_A_p_index" .format (interned_id ), "predicate" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
46
- Index ("{}_A_o_index" .format (interned_id ), "object" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
47
- Index ("{}_A_c_index" .format (interned_id ), "context" , mysql_length = MYSQL_MAX_INDEX_LENGTH )
27
+ Index (
28
+ "{interned_id}_A_termComb_index" .format (interned_id = interned_id ),
29
+ "termComb" ,
30
+ ),
31
+ Index (
32
+ "{interned_id}_A_s_index" .format (interned_id = interned_id ),
33
+ "subject" ,
34
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
35
+ ),
36
+ Index (
37
+ "{interned_id}_A_p_index" .format (interned_id = interned_id ),
38
+ "predicate" ,
39
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
40
+ ),
41
+ Index (
42
+ "{interned_id}_A_o_index" .format (interned_id = interned_id ),
43
+ "object" ,
44
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
45
+ ),
46
+ Index (
47
+ "{interned_id}_A_c_index" .format (interned_id = interned_id ),
48
+ "context" ,
49
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
50
+ )
48
51
)
49
52
50
53
51
54
def create_type_statements_table (interned_id , metadata ):
52
55
return Table (
53
- "{}_type_statements" .format (interned_id ),
56
+ "{interned_id }_type_statements" .format (interned_id = interned_id ),
54
57
metadata ,
55
58
Column ("id" , types .Integer , nullable = False , primary_key = True ),
56
59
Column ("member" , TermType , nullable = False ),
57
60
Column ("klass" , TermType , nullable = False ),
58
61
Column ("context" , TermType , nullable = False ),
59
62
Column ("termcomb" , types .Integer , nullable = False , key = "termComb" ),
60
- Index ("{}_T_termComb_index" .format (interned_id ), "termComb" ),
61
- Index ("{}_member_index" .format (interned_id ), "member" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
62
- Index ("{}_klass_index" .format (interned_id ), "klass" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
63
- Index ("{}_c_index" .format (interned_id ), "context" , mysql_length = MYSQL_MAX_INDEX_LENGTH )
63
+ Index (
64
+ "{interned_id}_T_termComb_index" .format (interned_id = interned_id ),
65
+ "termComb" ,
66
+ ),
67
+ Index (
68
+ "{interned_id}_member_index" .format (interned_id = interned_id ),
69
+ "member" ,
70
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
71
+ ),
72
+ Index (
73
+ "{interned_id}_klass_index" .format (interned_id = interned_id ),
74
+ "klass" ,
75
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
76
+ ),
77
+ Index (
78
+ "{interned_id}_c_index" .format (interned_id = interned_id ),
79
+ "context" ,
80
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
81
+ )
64
82
)
65
83
66
84
67
85
def create_literal_statements_table (interned_id , metadata ):
68
86
return Table (
69
- "{}_literal_statements" .format (interned_id ),
87
+ "{interned_id }_literal_statements" .format (interned_id = interned_id ),
70
88
metadata ,
71
89
Column ("id" , types .Integer , nullable = False , primary_key = True ),
72
90
Column ("subject" , TermType , nullable = False ),
@@ -76,16 +94,31 @@ def create_literal_statements_table(interned_id, metadata):
76
94
Column ("termcomb" , types .Integer , nullable = False , key = "termComb" ),
77
95
Column ("objlanguage" , types .String (255 ), key = "objLanguage" ),
78
96
Column ("objdatatype" , types .String (255 ), key = "objDatatype" ),
79
- Index ("{}_L_termComb_index" .format (interned_id ), "termComb" ),
80
- Index ("{}_L_s_index" .format (interned_id ), "subject" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
81
- Index ("{}_L_p_index" .format (interned_id ), "predicate" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
82
- Index ("{}_L_c_index" .format (interned_id ), "context" , mysql_length = MYSQL_MAX_INDEX_LENGTH )
97
+ Index (
98
+ "{interned_id}_L_termComb_index" .format (interned_id = interned_id ),
99
+ "termComb" ,
100
+ ),
101
+ Index (
102
+ "{interned_id}_L_s_index" .format (interned_id = interned_id ),
103
+ "subject" ,
104
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
105
+ ),
106
+ Index (
107
+ "{interned_id}_L_p_index" .format (interned_id = interned_id ),
108
+ "predicate" ,
109
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
110
+ ),
111
+ Index (
112
+ "{interned_id}_L_c_index" .format (interned_id = interned_id ),
113
+ "context" ,
114
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
115
+ )
83
116
)
84
117
85
118
86
119
def create_quoted_statements_table (interned_id , metadata ):
87
120
return Table (
88
- "{}_quoted_statements" .format (interned_id ),
121
+ "{interned_id }_quoted_statements" .format (interned_id = interned_id ),
89
122
metadata ,
90
123
Column ("id" , types .Integer , nullable = False , primary_key = True ),
91
124
Column ("subject" , TermType , nullable = False ),
@@ -95,19 +128,42 @@ def create_quoted_statements_table(interned_id, metadata):
95
128
Column ("termcomb" , types .Integer , nullable = False , key = "termComb" ),
96
129
Column ("objlanguage" , types .String (255 ), key = "objLanguage" ),
97
130
Column ("objdatatype" , types .String (255 ), key = "objDatatype" ),
98
- Index ("{}_Q_termComb_index" .format (interned_id ), "termComb" ),
99
- Index ("{}_Q_s_index" .format (interned_id ), "subject" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
100
- Index ("{}_Q_p_index" .format (interned_id ), "predicate" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
101
- Index ("{}_Q_o_index" .format (interned_id ), "object" , mysql_length = MYSQL_MAX_INDEX_LENGTH ),
102
- Index ("{}_Q_c_index" .format (interned_id ), "context" , mysql_length = MYSQL_MAX_INDEX_LENGTH )
131
+ Index (
132
+ "{interned_id}_Q_termComb_index" .format (interned_id = interned_id ),
133
+ "termComb" ,
134
+ ),
135
+ Index (
136
+ "{interned_id}_Q_s_index" .format (interned_id = interned_id ),
137
+ "subject" ,
138
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
139
+ ),
140
+ Index (
141
+ "{interned_id}_Q_p_index" .format (interned_id = interned_id ),
142
+ "predicate" ,
143
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
144
+ ),
145
+ Index (
146
+ "{interned_id}_Q_o_index" .format (interned_id = interned_id ),
147
+ "object" ,
148
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
149
+ ),
150
+ Index (
151
+ "{interned_id}_Q_c_index" .format (interned_id = interned_id ),
152
+ "context" ,
153
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
154
+ )
103
155
)
104
156
105
157
106
158
def create_namespace_binds_table (interned_id , metadata ):
107
159
return Table (
108
- "{}_namespace_binds" .format (interned_id ),
160
+ "{interned_id }_namespace_binds" .format (interned_id = interned_id ),
109
161
metadata ,
110
162
Column ("prefix" , types .String (20 ), unique = True , nullable = False , primary_key = True ),
111
163
Column ("uri" , types .Text ),
112
- Index ("{}_uri_index" .format (interned_id ), "uri" , mysql_length = MYSQL_MAX_INDEX_LENGTH )
164
+ Index (
165
+ "{interned_id}_uri_index" .format (interned_id = interned_id ),
166
+ "uri" ,
167
+ mysql_length = MYSQL_MAX_INDEX_LENGTH ,
168
+ )
113
169
)
0 commit comments