Skip to content

Commit dc00fff

Browse files
committed
more cleanup, add composite unique constraint on types table, fix typo bug in table templates definition
1 parent 2c24b9e commit dc00fff

File tree

3 files changed

+32
-27
lines changed

3 files changed

+32
-27
lines changed

rdflib_sqlalchemy/store.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -796,9 +796,10 @@ def triples(self, triple, context=None):
796796
asserted rdf:type table: <id>_type_statements
797797
asserted non rdf:type table: <id>_asserted_statements
798798
799-
triple columns: subject,predicate,object,context,termComb,
800-
objLanguage,objDatatype
801-
class membership columns: member,klass,context termComb
799+
triple columns:
800+
subject, predicate, object, context, termComb, objLanguage, objDatatype
801+
class membership columns:
802+
member, klass, context, termComb
802803
803804
FIXME: These union all selects *may* be further optimized by joins
804805

rdflib_sqlalchemy/tables.py

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from sqlalchemy import Column, Table, Index, types
1+
from sqlalchemy import Column, Table, Index, UniqueConstraint, types
22

33
from rdflib_sqlalchemy.types import TermType
44

@@ -7,7 +7,7 @@
77

88
TABLE_NAME_TEMPLATES = [
99
"{interned_id}_asserted_statements",
10-
"{interned_id}_literal_statements"
10+
"{interned_id}_literal_statements",
1111
"{interned_id}_namespace_binds",
1212
"{interned_id}_quoted_statements",
1313
"{interned_id}_type_statements",
@@ -24,10 +24,6 @@ def create_asserted_statements_table(interned_id, metadata):
2424
Column("object", TermType, nullable=False),
2525
Column("context", TermType, nullable=False),
2626
Column("termcomb", types.Integer, nullable=False, key="termComb"),
27-
Index(
28-
"{interned_id}_A_termComb_index".format(interned_id=interned_id),
29-
"termComb",
30-
),
3127
Index(
3228
"{interned_id}_A_s_index".format(interned_id=interned_id),
3329
"subject",
@@ -47,7 +43,11 @@ def create_asserted_statements_table(interned_id, metadata):
4743
"{interned_id}_A_c_index".format(interned_id=interned_id),
4844
"context",
4945
mysql_length=MYSQL_MAX_INDEX_LENGTH,
50-
)
46+
),
47+
Index(
48+
"{interned_id}_A_termComb_index".format(interned_id=interned_id),
49+
"termComb",
50+
),
5151
)
5252

5353

@@ -60,10 +60,6 @@ def create_type_statements_table(interned_id, metadata):
6060
Column("klass", TermType, nullable=False),
6161
Column("context", TermType, nullable=False),
6262
Column("termcomb", types.Integer, nullable=False, key="termComb"),
63-
Index(
64-
"{interned_id}_T_termComb_index".format(interned_id=interned_id),
65-
"termComb",
66-
),
6763
Index(
6864
"{interned_id}_member_index".format(interned_id=interned_id),
6965
"member",
@@ -78,7 +74,14 @@ def create_type_statements_table(interned_id, metadata):
7874
"{interned_id}_c_index".format(interned_id=interned_id),
7975
"context",
8076
mysql_length=MYSQL_MAX_INDEX_LENGTH,
81-
)
77+
),
78+
Index(
79+
"{interned_id}_T_termComb_index".format(interned_id=interned_id),
80+
"termComb",
81+
),
82+
UniqueConstraint(
83+
"member", "klass", name="{interned_id}_type_member_klass_key",
84+
),
8285
)
8386

8487

@@ -94,10 +97,6 @@ def create_literal_statements_table(interned_id, metadata):
9497
Column("termcomb", types.Integer, nullable=False, key="termComb"),
9598
Column("objlanguage", types.String(255), key="objLanguage"),
9699
Column("objdatatype", types.String(255), key="objDatatype"),
97-
Index(
98-
"{interned_id}_L_termComb_index".format(interned_id=interned_id),
99-
"termComb",
100-
),
101100
Index(
102101
"{interned_id}_L_s_index".format(interned_id=interned_id),
103102
"subject",
@@ -112,7 +111,11 @@ def create_literal_statements_table(interned_id, metadata):
112111
"{interned_id}_L_c_index".format(interned_id=interned_id),
113112
"context",
114113
mysql_length=MYSQL_MAX_INDEX_LENGTH,
115-
)
114+
),
115+
Index(
116+
"{interned_id}_L_termComb_index".format(interned_id=interned_id),
117+
"termComb",
118+
),
116119
)
117120

118121

@@ -128,10 +131,6 @@ def create_quoted_statements_table(interned_id, metadata):
128131
Column("termcomb", types.Integer, nullable=False, key="termComb"),
129132
Column("objlanguage", types.String(255), key="objLanguage"),
130133
Column("objdatatype", types.String(255), key="objDatatype"),
131-
Index(
132-
"{interned_id}_Q_termComb_index".format(interned_id=interned_id),
133-
"termComb",
134-
),
135134
Index(
136135
"{interned_id}_Q_s_index".format(interned_id=interned_id),
137136
"subject",
@@ -151,7 +150,11 @@ def create_quoted_statements_table(interned_id, metadata):
151150
"{interned_id}_Q_c_index".format(interned_id=interned_id),
152151
"context",
153152
mysql_length=MYSQL_MAX_INDEX_LENGTH,
154-
)
153+
),
154+
Index(
155+
"{interned_id}_Q_termComb_index".format(interned_id=interned_id),
156+
"termComb",
157+
),
155158
)
156159

157160

rdflib_sqlalchemy/termutils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
PREDICATE = 1
1414
OBJECT = 2
1515
CONTEXT = 3
16-
TERM_COMBINATIONS = dict([(term, index) for index, term, in enumerate([
16+
17+
TERM_COMBINATIONS = dict([(term, index) for index, term in enumerate([
1718
"UUUU", "UUUB", "UUUF", "UUVU", "UUVB", "UUVF", "UUBU", "UUBB", "UUBF",
1819
"UULU", "UULB", "UULF", "UUFU", "UUFB", "UUFF",
1920
#
@@ -183,7 +184,7 @@ def triple_pattern_to_term_combinations(triple):
183184

184185

185186
def type_to_term_combination(member, klass, context):
186-
"""Map a type to a TermCombo."""
187+
"""Map a type to a term combination."""
187188
try:
188189
rt = TERM_COMBINATIONS["%sU%s%s" %
189190
(term_to_letter(member),

0 commit comments

Comments
 (0)