Skip to content

Commit 36d07d6

Browse files
authored
Fix vocabulary term initialization (#412)
* Remove file from vocabulary file list that doesn't appear to exist * Fix for #411 * Use the right method name (thanks mypy)
1 parent 3b96003 commit 36d07d6

File tree

5 files changed

+26
-13
lines changed

5 files changed

+26
-13
lines changed

isb_lib/core.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
from signal import SIGINT
1212

1313
import igsn_lib.time
14+
import term_store
15+
from sqlmodel import Session
1416

1517
from isamples_metadata.metadata_constants import METADATA_SAMPLE_IDENTIFIER, METADATA_AT_ID, METADATA_LABEL, \
1618
METADATA_HAS_CONTEXT_CATEGORY, \
@@ -27,6 +29,7 @@
2729
from isamples_metadata.solr_field_constants import SOLR_PRODUCED_BY_SAMPLING_SITE_ELEVATION_IN_METERS, \
2830
SOLR_CURATION_LABEL, SOLR_CURATION_DESCRIPTION, SOLR_CURATION_ACCESS_CONSTRAINTS, SOLR_CURATION_LOCATION, \
2931
SOLR_CURATION_RESPONSIBILITY
32+
from isamples_metadata.vocabularies import vocabulary_mapper
3033
from isb_lib.models.thing import Thing
3134
from isamples_metadata.Transformer import Transformer, geo_to_h3
3235
import dateparser
@@ -36,10 +39,13 @@
3639
import shapely.wkt
3740
import shapely.geometry
3841

42+
from isb_lib.vocabulary import vocab_adapter
3943
from isb_web import sqlmodel_database
4044
from isb_web.sqlmodel_database import SQLModelDAO
4145
from typing import Optional
4246

47+
from isb_web.vocabulary import SAMPLEDFEATURE_URI, MATERIAL_URI, MATERIALSAMPLEOBJECTTYPE_URI
48+
4349
RECOGNIZED_DATE_FORMATS = [
4450
"%Y", # e.g. 1985
4551
"%Y-%m-%d", # e.g. 1947-08-06
@@ -103,6 +109,16 @@ def things_main(ctx, db_url, solr_url, verbosity="INFO"):
103109
ctx.obj["solr_url"] = solr_url
104110

105111

112+
def initialize_vocabularies(session: Session):
113+
repository = term_store.get_repository(session)
114+
vocab_adapter.uijson_vocabulary_dict(SAMPLEDFEATURE_URI, repository)
115+
vocab_adapter.uijson_vocabulary_dict(MATERIAL_URI, repository)
116+
vocab_adapter.uijson_vocabulary_dict(MATERIALSAMPLEOBJECTTYPE_URI, repository)
117+
vocabulary_mapper.sampled_feature_type()
118+
vocabulary_mapper.material_type()
119+
vocabulary_mapper.specimen_type()
120+
121+
106122
def datetimeToSolrStr(dt):
107123
if dt is None:
108124
return None

isb_web/main.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@
2121

2222
import isb_web
2323
import isamples_metadata.GEOMETransformer
24-
from isamples_metadata.vocabularies import vocabulary_mapper
25-
from isb_lib.core import MEDIA_GEO_JSON, MEDIA_JSON, MEDIA_NQUADS, SOLR_TIME_FORMAT
24+
from isb_lib.core import MEDIA_GEO_JSON, MEDIA_JSON, MEDIA_NQUADS, SOLR_TIME_FORMAT, initialize_vocabularies
2625
from isb_lib.localcontexts.localcontexts_client import local_contexts_info_for_resolved_content
2726
from isb_lib.models.thing import Thing
2827
from isb_lib.utilities import h3_utilities
2928
from isb_lib.utilities.url_utilities import full_url_from_suffix
30-
from isb_lib.vocabulary import vocab_adapter
3129
from isb_web import sqlmodel_database, analytics, manage, debug, metrics, vocabulary, export, auth
3230
from isb_web.analytics import AnalyticsEvent
3331
from isb_web import schemas
@@ -46,7 +44,6 @@
4644
from isb_web.schemas import ThingPage
4745
from isb_web.sqlmodel_database import SQLModelDAO, taxonomy_name_to_kingdom_map
4846
import isb_lib.stac
49-
from isb_web.vocabulary import SAMPLEDFEATURE_URI, MATERIAL_URI, MATERIALSAMPLEOBJECTTYPE_URI
5047

5148
THIS_PATH = os.path.dirname(os.path.abspath(__file__))
5249

@@ -148,14 +145,7 @@ def on_startup():
148145
dao.connect_sqlmodel(isb_web.config.Settings().database_url)
149146
session = dao.get_session()
150147
orcid_ids = sqlmodel_database.all_orcid_ids(session)
151-
# preload each of these into memory to avoid performance issues on hyde
152-
repository = term_store.get_repository(session)
153-
vocab_adapter.uijson_vocabulary_dict(SAMPLEDFEATURE_URI, repository)
154-
vocab_adapter.uijson_vocabulary_dict(MATERIAL_URI, repository)
155-
vocab_adapter.uijson_vocabulary_dict(MATERIALSAMPLEOBJECTTYPE_URI, repository)
156-
vocabulary_mapper.sampled_feature_type()
157-
vocabulary_mapper.material_type()
158-
vocabulary_mapper.specimen_type()
148+
initialize_vocabularies(session)
159149
# Force this into memory so it's cached when we need it later
160150
global TAXONOMY_NAME_TO_KINGDOM_MAP
161151
if config.Settings().taxon_cache_enabled:

scripts/geome_things.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,9 @@ def populateIsbCoreSolr(ctx, ignore_last_modified: bool):
350350
solr_url=solr_url,
351351
min_time_created=max_solr_updated_date
352352
)
353+
dao = SQLModelDAO(db_url)
354+
session = dao.get_session()
355+
isb_lib.core.initialize_vocabularies(session)
353356
allkeys = solr_importer.run_solr_import(isb_lib.geome_adapter.reparseAsCoreRecord)
354357
logger.info(f"Total keys= {len(allkeys)}")
355358

scripts/opencontext_things.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from isamples_metadata import OpenContextTransformer
1313
from isb_lib import opencontext_adapter
14-
from isb_lib.core import MEDIA_JSON
14+
from isb_lib.core import MEDIA_JSON, initialize_vocabularies
1515
from isb_lib.opencontext_adapter import OPENCONTEXT_PAGE_SIZE
1616
from isb_web import sqlmodel_database
1717
from isb_web.sqlmodel_database import SQLModelDAO, save_thing, DatabaseBulkUpdater
@@ -163,6 +163,8 @@ def populate_isb_core_solr(ctx, ignore_last_modified: bool):
163163
url=solr_url,
164164
authority_id=isb_lib.opencontext_adapter.OpenContextItem.AUTHORITY_ID,
165165
)
166+
session = SQLModelDAO(db_url).get_session()
167+
initialize_vocabularies(session)
166168
L.info(f"Going to index Things with tcreated > {max_solr_updated_date}")
167169
solr_importer = isb_lib.core.CoreSolrImporter(
168170
db_url=db_url,

scripts/smithsonian_things.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ def populate_isb_core_solr(ctx):
128128
logger = isb_lib.core.getLogger()
129129
db_url = ctx.obj["db_url"]
130130
solr_url = ctx.obj["solr_url"]
131+
session = SQLModelDAO(db_url).get_session()
132+
isb_lib.initialize_vocabularies(session)
131133
solr_importer = isb_lib.core.CoreSolrImporter(
132134
db_url=db_url,
133135
authority_id=isb_lib.smithsonian_adapter.SmithsonianItem.AUTHORITY_ID,

0 commit comments

Comments
 (0)