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.3 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 Index authority literal subjects
  13. CREATE INDEX IF NOT EXISTS auth_lit_subject_idx ON locid.auth_literals (subject_id);
  14. --- #step Analyze auth literals
  15. --- #notx
  16. VACUUM ANALYZE locid.auth_literals;
  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. --- #step Index work literal subjects
  21. CREATE INDEX IF NOT EXISTS work_lit_subject_idx ON locid.work_literals (subject_id);
  22. --- #step Analyze work triples
  23. --- #notx
  24. VACUUM ANALYZE locid.work_triples;
  25. --- #step Analyze work literals
  26. --- #notx
  27. VACUUM ANALYZE locid.work_literals;
  28. --- #step Index instance subjects and objects
  29. CREATE INDEX IF NOT EXISTS instance_subject_idx ON locid.instance_triples (subject_id);
  30. CREATE INDEX IF NOT EXISTS instance_object_idx ON locid.instance_triples (object_id);
  31. --- #step Index instance literal subjects
  32. CREATE INDEX IF NOT EXISTS instance_lit_subject_idx ON locid.instance_literals (subject_id);
  33. --- #step Analyze instance triples
  34. --- #notx
  35. VACUUM ANALYZE locid.instance_triples;
  36. --- #step Analyze instance literals
  37. --- #notx
  38. VACUUM ANALYZE locid.instance_literals;
  39. --- #step Index well-known nodes
  40. CREATE TABLE IF NOT EXISTS locid.node_aliases (
  41. node_alias VARCHAR UNIQUE NOT NULL,
  42. node_id INTEGER UNIQUE NOT NULL,
  43. node_uuid UUID UNIQUE NOT NULL,
  44. node_iri VARCHAR UNIQUE NOT NULL
  45. );
  46. CREATE OR REPLACE PROCEDURE locid.alias_node (alias VARCHAR, iri VARCHAR)
  47. LANGUAGE plpgsql
  48. AS $ln$
  49. BEGIN
  50. INSERT INTO locid.node_aliases (node_alias, node_id, node_uuid, node_iri)
  51. SELECT alias, node_id, node_uuid, node_iri
  52. FROM locid.nodes
  53. WHERE node_iri = iri
  54. ON CONFLICT DO NOTHING;
  55. END;
  56. $ln$;
  57. CREATE OR REPLACE FUNCTION locid.common_node(alias VARCHAR) RETURNS UUID
  58. LANGUAGE SQL STABLE PARALLEL SAFE COST 10
  59. AS $$
  60. SELECT node_uuid FROM locid.node_aliases WHERE node_alias = alias;
  61. $$;
  62. CALL locid.alias_node('instance-of', 'http://id.loc.gov/ontologies/bibframe/instanceOf');
  63. CALL locid.alias_node('label', 'http://www.w3.org/2000/01/rdf-schema#label');
  64. CALL locid.alias_node('auth-label', 'http://www.loc.gov/mads/rdf/v1#authoritativeLabel');
  65. CALL locid.alias_node('gender', 'http://www.loc.gov/mads/rdf/v1#gender');
  66. CALL locid.alias_node('concept', 'http://www.w3.org/2004/02/skos/core#Concept');
  67. CALL locid.alias_node('type', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type');
  68. CALL locid.alias_node('isbn', 'http://id.loc.gov/ontologies/bibframe/Isbn');
  69. CALL locid.alias_node('value', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#value');
  70. CALL locid.alias_node('bf-id-by', 'http://id.loc.gov/ontologies/bibframe/identifiedBy');
  71. CALL locid.alias_node('work', 'http://id.loc.gov/ontologies/bibframe/Work');
  72. CALL locid.alias_node('instance', 'http://id.loc.gov/ontologies/bibframe/Instance');
  73. ANALYSE locid.node_aliases;
Tip!

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

Comments

Loading...