def test_default_language_scottish_gaelic(self): provider_gd = HeritagedataProvider( { 'id': 'Heritagedata', 'default_language': 'gd' }, scheme_uri='http://purl.org/heritagedata/schemes/1') concept = provider_gd.get_by_id('500614') concept = concept.__dict__ self.assertEqual( concept['uri'], 'http://purl.org/heritagedata/schemes/1/concepts/500614') result = provider_gd.find({'label': 'LOCH', 'type': 'concept'}) for r in result: self.assertIn("LOCH", r['label']) self.assertTrue(r['lang'] in ('en', 'gd')) provider_en = HeritagedataProvider( {'id': 'Heritagedata'}, scheme_uri='http://purl.org/heritagedata/schemes/1') concept = provider_en.get_by_id('500614') concept = concept.__dict__ self.assertEqual( concept['uri'], 'http://purl.org/heritagedata/schemes/1/concepts/500614') result = provider_en.find({'label': 'LOCH', 'type': 'concept'}) for r in result: self.assertIn("LOCH", r['label']) self.assertTrue(r['lang'] in ('en', 'gd'))
def test_get_by_id_nonexistant_id(self): concept = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period' ).get_by_id('123') self.assertFalse(concept)
def test_find_collections(self): r = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period').find( {'type': 'collection'}) self.assertEqual(r, [])
def test_set_custom_session(self): import requests sess = requests.Session() provider = HeritagedataProvider( {'id': 'Heritagedata'}, service_scheme_uri='http://heritagedata.org/live/services/', session=sess) self.assertEqual(sess, provider.session)
def test_expand_invalid(self): all_childeren_invalid = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period' ).expand('invalid') self.assertFalse(all_childeren_invalid)
def test_get_all(self): kwargs = {'language': 'nl'} self.assertFalse( HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period'). get_all(**kwargs))
def test_find_wrong_type(self): self.assertRaises( ValueError, HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period'). find, {'type': 'collectie'})
def test_default_provider(self): provider = HeritagedataProvider( {'id': 'Heritagedata'}, service_scheme_uri='http://heritagedata.org/live/services/') self.assertEqual(provider.base_scheme_uri, 'http://purl.org/heritagedata/schemes') self.assertEqual(provider.scheme_id, 'eh_period') self.assertEqual(provider.service_scheme_uri, 'http://heritagedata.org/live/services')
def test_get_top_concepts(self): kwargs = {'language': 'nl'} top_heritagedata_concepts = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period' ).get_top_concepts(**kwargs) self.assertIsInstance(top_heritagedata_concepts, list) self.assertGreater(len(top_heritagedata_concepts), 0)
def test_get_top_display_sort_sort(self): prov = HeritagedataProvider( {'id': 'Heritagedata'}, scheme_uri='http://purl.org/heritagedata/schemes/eh_period') sorted_by_id = prov.get_top_display(sort='id') sorted_by_uri = prov.get_top_display(sort='uri', sort_order='desc') assert len(sorted_by_id) > 1 assert len(sorted_by_id) == len(sorted_by_uri) assert [c['id'] for c in sorted_by_id] != [c['id'] for c in sorted_by_uri]
def test_get_items_non_exist_provider(self): provider = HeritagedataProvider( {'id': 'Heritagedata'}, service_scheme_uri='http://not_existent.org/live/services/') self.assertRaises( ProviderUnavailableException, provider._get_items, "getConceptLabelMatch", { 'contains': 'VICTORIAN', 'schemeURI': 'http://purl.org/heritagedata/schemes/eh_period' })
def test_expand(self): all_childeren_pm = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period' ).expand('PM') self.assertIsInstance(all_childeren_pm, list) self.assertGreater(len(all_childeren_pm), 0) self.assertIn('PM', all_childeren_pm)
def test_get_by_uri(self): concept = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period' ).get_by_uri( 'http://purl.org/heritagedata/schemes/eh_period/concepts/PM') concept = concept.__dict__ self.assertEqual( concept['uri'], 'http://purl.org/heritagedata/schemes/eh_period/concepts/PM') self.assertEqual(concept['id'], 'PM')
def test_find_kwargs_language(self): kwargs = {'language': 'gd'} provider_gd = HeritagedataProvider( { 'id': 'Heritagedata', 'default_language': 'en' }, scheme_uri='http://purl.org/heritagedata/schemes/1') result = provider_gd.find({ 'label': 'LOCH', 'type': 'concept' }, **kwargs) for r in result: self.assertIn("LOCH", r['label']) self.assertTrue(r['lang'] in ('en', 'gd'))
def test_find_with_collection(self): self.assertRaises( ValueError, HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period'). find, { 'type': 'concept', 'collection': { 'id': '300007466', 'depth': 'all' } })
def test_get_top_display(self): kwargs = {'language': 'nl'} top_heritagedata_display = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period' ).get_top_display(**kwargs) self.assertIsInstance(top_heritagedata_display, list) self.assertGreater(len(top_heritagedata_display), 0) keys_first_display = top_heritagedata_display[0].keys() for key in ['id', 'type', 'label', 'uri']: self.assertIn(key, keys_first_display) self.assertIn('POST MEDIEVAL', [label['label'] for label in top_heritagedata_display])
def test_find_multiple_keywords(self): r = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period').find({ 'label': 'iron Age', 'type': 'concept' }) self.assertIsInstance(r, list) self.assertGreater(len(r), 0) for res in r: self.assertEqual(res['type'], 'concept')
def test_find_one_keyword_language(self): kwargs = {'language': 'nl'} r = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period').find( { 'label': 'VICTORIAN', 'type': 'concept' }, **kwargs) self.assertIsInstance(r, list) self.assertGreater(len(r), 0) for res in r: self.assertEqual(res['type'], 'concept')
def test_scheme_uri_not_available(self): provider = HeritagedataProvider( {'id': 'Heritagedata'}, service_scheme_uri= 'http://heritagedata.org/live/services_not_available/') self.assertEqual(provider.base_scheme_uri, 'http://purl.org/heritagedata/schemes') self.assertEqual(provider.scheme_id, 'eh_period') self.assertEqual( provider.service_scheme_uri, 'http://heritagedata.org/live/services_not_available') self.assertRaises(ProviderUnavailableException, provider.find, { 'label': 'LOCH', 'type': 'concept' })
def test_get_childeren_display(self): kwargs = {'language': 'nl'} childeren_Heritagedata_pm = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period' ).get_children_display('PM', **kwargs) self.assertIsInstance(childeren_Heritagedata_pm, list) self.assertGreater(len(childeren_Heritagedata_pm), 0) keys_first_display = childeren_Heritagedata_pm[0].keys() for key in ['id', 'type', 'label', 'uri']: self.assertIn(key, keys_first_display) self.assertIn("TUDOR", [label['label'] for label in childeren_Heritagedata_pm])
def test_get_top_concepts_sort(self): prov = HeritagedataProvider( {'id': 'Heritagedata'}, scheme_uri='http://purl.org/heritagedata/schemes/eh_period') not_sorted = prov.get_top_concepts() sorted_by_id = prov.get_top_concepts(sort='id') assert [c['id'] for c in not_sorted] == [c['id'] for c in sorted_by_id] sorted_by_uri = prov.get_top_concepts(sort='uri') assert len(sorted_by_id) == 8 assert len(sorted_by_id) == len(sorted_by_uri) assert [c['id'] for c in sorted_by_id] == [c['id'] for c in sorted_by_uri] sorted_by_label = prov.get_top_concepts(sort='label') assert len(sorted_by_id) == len(sorted_by_label) assert [c['id'] for c in sorted_by_id] == [c['id'] for c in sorted_by_label]
def test_get_items(self): provider = HeritagedataProvider( {'id': 'Heritagedata'}, service_scheme_uri='http://heritagedata.org/live/services/') res = provider._get_items( "getConceptLabelMatch", { 'contains': 'VICTORIAN', 'schemeURI': 'http://purl.org/heritagedata/schemes/eh_period' }) self.assertEqual(len(res), 1) self.assertEqual(res[0]['label'], 'VICTORIAN') self.assertEqual(res[0]['id'], 'VIC') self.assertEqual(res[0]['lang'], 'en') self.assertEqual(res[0]['type'], 'concept') self.assertEqual( res[0]['uri'], 'http://purl.org/heritagedata/schemes/eh_period/concepts/VIC')
def test_find_sort(self): prov = HeritagedataProvider( {'id': 'Heritagedata'}, scheme_uri='http://purl.org/heritagedata/schemes/eh_period') sorted_by_id = prov.find({'label': 'century', 'sort': 'id'}) sorted_by_uri = prov.find({'label': 'century', 'sort': 'uri'}) assert len(sorted_by_id) > 1 assert len(sorted_by_id) == len(sorted_by_uri) assert [c for c in sorted_by_id] == [c for c in sorted_by_uri] sorted_by_label = prov.find({'label': 'century', 'sort': 'label'}) assert len(sorted_by_id) == len(sorted_by_label) assert [c for c in sorted_by_id] == [c for c in sorted_by_label] sorted_by_sortlabel = prov.find({ 'label': 'century', 'sort': 'sortlabel' }) assert sorted_by_sortlabel == sorted_by_label
def test_get_children_display_sort(self): prov = HeritagedataProvider( {'id': 'Heritagedata'}, scheme_uri='http://purl.org/heritagedata/schemes/eh_period') not_sorted = prov.get_children_display('PM') sorted_by_id = prov.get_children_display('PM', sort='id') assert [c['id'] for c in not_sorted] == [c['id'] for c in sorted_by_id] assert len(sorted_by_id) == len(not_sorted) sorted_by_label = prov.get_children_display('PM', sort='label') assert len(sorted_by_id) == len(sorted_by_label) assert [c['id'] for c in sorted_by_id] == [c['id'] for c in sorted_by_label] sorted_by_label_desc = prov.get_children_display('PM', sort='label', sort_order='desc') assert [c['id'] for c in sorted_by_label ] != [c['id'] for c in sorted_by_label_desc]
def test_get_by_id_concept(self): concept = HeritagedataProvider( { 'id': 'Heritagedata' }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period' ).get_by_id('PM') concept = concept.__dict__ self.assertEqual( concept['uri'], 'http://purl.org/heritagedata/schemes/eh_period/concepts/PM') self.assertEqual(concept['type'], 'concept') self.assertIsInstance(concept['labels'], list) preflabels = [{'en': 'POST MEDIEVAL'}] preflabels_conc = [{ label.language: label.label } for label in concept['labels'] if label.type == 'prefLabel'] self.assertGreater(len(preflabels_conc), 0) for label in preflabels: self.assertIn(label, preflabels_conc) self.assertGreater(len(concept['notes']), 0) self.assertIsNotNone(concept['notes'][0]) self.assertEqual(concept['notes'][0].language, 'en') self.assertEqual( concept['notes'][0].note, 'Begins with the dissolution of the monasteries and' ' ends with the death of Queen Victoria. ' 'Use more specific period where known.') self.assertEqual(concept['notes'][0].type, 'scopeNote') self.assertEqual(concept['id'], 'PM') self.assertEqual(len(concept['broader']), 0) self.assertEqual(len(concept['related']), 0) self.assertIn('STU', concept['narrower'])
def test_get_top_concepts_provider(self): provider = HeritagedataProvider( {'id': 'Heritagedata'}, scheme_uri='http://purl.org/heritagedata/schemes/eh_period') self.assertEqual(len(provider.get_top_concepts()), 8)
def test_get_items_wrong_params(self): provider = HeritagedataProvider( {'id': 'Heritagedata'}, service_scheme_uri='http://heritagedata.org/live/services/') self.assertRaises(ValueError, provider._get_items, "getConceptLabelMatch", {"fhgfhg"})
def test_get_items_non_exist_service2(self): provider = HeritagedataProvider( {'id': 'Heritagedata'}, service_scheme_uri='http://heritagedata.org/live/services/') self.assertRaises(ProviderUnavailableException, provider._get_items, "invalid", {})
#!/usr/bin/python ''' This script demonstrates using the HeritagedataProvider to find the concepts with 'iron' in their label ''' from skosprovider_heritagedata.providers import HeritagedataProvider periodprovider = HeritagedataProvider( {'id': 'Heritagedata'}, scheme_uri='http://purl.org/heritagedata/schemes/eh_period') results = periodprovider.find({'label': 'iron', 'type': 'concept'}) print('Results') print('------') for result in results: print(result)
def includeme(config): # pragma: no cover TREES = SQLAlchemyProvider({ 'id': 'TREES', 'conceptscheme_id': 1 }, config.registry.dbmaker) GEO = SQLAlchemyProvider({ 'id': 'GEOGRAPHY', 'conceptscheme_id': 2 }, config.registry.dbmaker) STYLES = SQLAlchemyProvider({ 'id': 'STYLES', 'conceptscheme_id': 3 }, config.registry.dbmaker) MATERIALS = SQLAlchemyProvider( { 'id': 'MATERIALS', 'conceptscheme_id': 4 }, config.registry.dbmaker, uri_generator=UriPatternGenerator('urn:x-vioe:materials:%s')) # use 'subject': ['external'] for read only external providers (only available in REST service) AAT = AATProvider({'id': 'AAT', 'subject': ['external']}, ) TGN = TGNProvider({'id': 'TGN', 'subject': ['external']}) EH_PERIOD = HeritagedataProvider( { 'id': 'EH_PERIOD', 'subject': ['external'] }, scheme_uri='http://purl.org/heritagedata/schemes/eh_period') EH_MONUMENT_TYPE = HeritagedataProvider( { 'id': 'EH_MONUMENT_TYPE', 'subject': ['external'] }, scheme_uri='http://purl.org/heritagedata/schemes/eh_tmt2') EH_MATERIALS = HeritagedataProvider( { 'id': 'EH_MATERIALS', 'subject': ['external'] }, scheme_uri='http://purl.org/heritagedata/schemes/eh_tbm') skosregis = config.get_skos_registry() skosregis.register_provider(TREES) skosregis.register_provider(GEO) skosregis.register_provider(STYLES) skosregis.register_provider(MATERIALS) skosregis.register_provider(AAT) skosregis.register_provider(TGN) skosregis.register_provider(EH_PERIOD) skosregis.register_provider(EH_MONUMENT_TYPE) skosregis.register_provider(EH_MATERIALS)