Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

loc-id-triple-index.sql 3.1 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  1. --- #step Index node IRIs
  2. CREATE INDEX IF NOT EXISTS node_iri_idx ON locid.nodes (node_iri);
  3. --- #step Vacuum and analyze node table
  4. --- #notx
  5. VACUUM ANALYZE locid.nodes;
  6. --- #step Index authority subjects and objects
  7. CREATE INDEX IF NOT EXISTS auth_subject_idx ON locid.auth_triples (subject_id);
  8. CREATE INDEX IF NOT EXISTS auth_object_idx ON locid.auth_triples (object_id);
  9. --- #step Analyze auth triples
  10. --- #notx
  11. VACUUM ANALYZE locid.auth_triples;
  12. --- #step Analyze auth literals
  13. --- #notx
  14. VACUUM ANALYZE locid.auth_literals;
  15. --- #step Index authority literal subjects
  16. CREATE INDEX IF NOT EXISTS auth_lit_subject_idx ON locid.auth_literals (subject_id);
  17. --- #step Index work subjects and objects
  18. CREATE INDEX IF NOT EXISTS work_subject_idx ON locid.work_triples (subject_id);
  19. CREATE INDEX IF NOT EXISTS work_object_idx ON locid.work_triples (object_id);
  20. ANALYZE locid.work_triples;
  21. --- #step Index work literal subjects
  22. CREATE INDEX IF NOT EXISTS work_lit_subject_idx ON locid.work_literals (subject_id);
  23. ANALYZE locid.work_literals;
  24. --- #step Analyze work triples
  25. --- #notx
  26. VACUUM ANALYZE locid.work_triples;
  27. --- #step Analyze work literals
  28. --- #notx
  29. VACUUM ANALYZE locid.work_literals;
  30. --- #step Index instance subjects and objects
  31. CREATE INDEX IF NOT EXISTS instance_subject_idx ON locid.instance_triples (subject_id);
  32. CREATE INDEX IF NOT EXISTS instance_object_idx ON locid.instance_triples (object_id);
  33. ANALYZE locid.instance_triples;
  34. --- #step Index instance literal subjects
  35. CREATE INDEX IF NOT EXISTS instance_lit_subject_idx ON locid.instance_literals (subject_id);
  36. ANALYZE locid.instance_literals;
  37. --- #step Analyze instance triples
  38. --- #notx
  39. VACUUM ANALYZE locid.instance_triples;
  40. --- #step Analyze instance literals
  41. --- #notx
  42. VACUUM ANALYZE locid.instance_literals;
  43. --- #step Index well-known nodes
  44. CREATE TABLE IF NOT EXISTS locid.node_aliases (
  45. node_alias VARCHAR UNIQUE NOT NULL,
  46. node_id INTEGER UNIQUE NOT NULL,
  47. node_uuid UUID UNIQUE NOT NULL,
  48. node_iri VARCHAR UNIQUE NOT NULL
  49. );
  50. CREATE OR REPLACE PROCEDURE locid.alias_node (alias VARCHAR, iri VARCHAR)
  51. LANGUAGE plpgsql
  52. AS $ln$
  53. BEGIN
  54. INSERT INTO locid.node_aliases (node_alias, node_id, node_uuid, node_iri)
  55. SELECT alias, node_id, node_uuid, node_iri
  56. FROM locid.nodes
  57. WHERE node_iri = iri
  58. ON CONFLICT DO NOTHING;
  59. END;
  60. $ln$;
  61. CREATE OR REPLACE FUNCTION locid.common_node(alias VARCHAR) RETURNS UUID
  62. LANGUAGE SQL STABLE PARALLEL SAFE COST 10
  63. AS $$
  64. SELECT node_uuid FROM locid.node_aliases WHERE node_alias = alias;
  65. $$;
  66. CALL locid.alias_node('label', 'http://www.w3.org/2000/01/rdf-schema#label');
  67. CALL locid.alias_node('auth-label', 'http://www.loc.gov/mads/rdf/v1#authoritativeLabel');
  68. CALL locid.alias_node('gender', 'http://www.loc.gov/mads/rdf/v1#gender');
  69. CALL locid.alias_node('concept', 'http://www.w3.org/2004/02/skos/core#Concept');
  70. CALL locid.alias_node('type', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type');
  71. CALL locid.alias_node('isbn', 'http://id.loc.gov/ontologies/bibframe/Isbn');
  72. CALL locid.alias_node('value', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
  73. CALL locid.alias_node('bf-id-by', 'http://id.loc.gov/ontologies/bibframe/identifiedBy');
  74. ANALYSE locid.node_aliases;
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...