def test_parse_subcatalog(self): publisher = {'name': 'Publisher', 'email': '*****@*****.**', 'type': 'Publisher', 'uri': 'http://pub.lish.er'} dataset = { 'id': '4b6fe9ca-dc77-4cec-92a4-55c6624a5bd6', 'name': 'test-dataset', 'title': 'test dataset', 'extras': [ {'key': 'source_catalog_title', 'value': 'Subcatalog example'}, {'key': 'source_catalog_homepage', 'value': 'http://subcatalog.example'}, {'key': 'source_catalog_description', 'value': 'Subcatalog example description'}, {'key': 'source_catalog_language', 'value': 'http://publications.europa.eu/resource/authority/language/ITA'}, {'key': 'source_catalog_modified', 'value': '2000-01-01'}, {'key': 'source_catalog_publisher', 'value': json.dumps(publisher)} ] } catalog_dict = { 'title': 'My Catalog', 'description': 'An Open Data Catalog', 'homepage': 'http://example.com', 'language': 'de', } s = RDFSerializer() s.serialize_catalog(catalog_dict, dataset_dicts=[dataset]) g = s.g p = RDFParser(profiles=['euro_dcat_ap']) p.g = g # at least one subcatalog with hasPart subcatalogs = list(p.g.objects(None, DCT.hasPart)) assert_true(subcatalogs) # at least one dataset in subcatalogs subdatasets = [] for subcatalog in subcatalogs: datasets = p.g.objects(subcatalog, DCAT.dataset) for dataset in datasets: subdatasets.append((dataset,subcatalog,)) assert_true(subdatasets) datasets = dict([(d['title'], d) for d in p.datasets()]) for subdataset, subcatalog in subdatasets: title = unicode(list(p.g.objects(subdataset, DCT.title))[0]) dataset = datasets[title] has_subcat = False for ex in dataset['extras']: exval = ex['value'] exkey = ex['key'] if exkey == 'source_catalog_homepage': has_subcat = True eq_(exval, unicode(subcatalog)) # check if we had subcatalog in extras assert_true(has_subcat)
def test_subcatalog(self): publisher = {'name': 'Publisher', 'email': '*****@*****.**', 'type': 'Publisher', 'uri': 'http://pub.lish.er'} dataset = { 'id': '4b6fe9ca-dc77-4cec-92a4-55c6624a5bd6', 'name': 'test-dataset', 'title': 'test dataset', 'extras': [ {'key': 'source_catalog_title', 'value': 'Subcatalog example'}, {'key': 'source_catalog_homepage', 'value': 'http://subcatalog.example'}, {'key': 'source_catalog_description', 'value': 'Subcatalog example description'}, {'key': 'source_catalog_language', 'value': 'http://publications.europa.eu/resource/authority/language/ITA'}, {'key': 'source_catalog_modified', 'value': '2000-01-01'}, {'key': 'source_catalog_publisher', 'value': json.dumps(publisher)} ] } catalog_dict = { 'title': 'My Catalog', 'description': 'An Open Data Catalog', 'homepage': 'http://example.com', 'language': 'de', } config[DCAT_EXPOSE_SUBCATALOGS] = 'true' s = RDFSerializer() g = s.g s.serialize_catalog(catalog_dict, dataset_dicts=[dataset]) # check if we have catalog->hasPart->subcatalog catalogs = list(g.triples((None, RDF.type, DCAT.Catalog,))) root = list(g.subjects(DCT.hasPart, None)) assert_true(len(catalogs)>0, catalogs) assert_true(len(root) == 1, root) root_ref = root[0] # check subcatalog subcatalogs = list(g.objects(root_ref, DCT.hasPart)) assert_true(len(subcatalogs) == 1) stitle = list(g.objects(subcatalogs[0], DCT.title)) assert_true(len(stitle) == 1) assert_true(str(stitle[0]) == 'Subcatalog example') # check dataset dataset_ref = list(g.subjects(RDF.type, DCAT.Dataset)) assert_true(len(dataset_ref) == 1) dataset_ref = dataset_ref[0] dataset_title = list(g.objects(dataset_ref, DCT.title)) assert_true(len(dataset_title) == 1) assert_true(unicode(dataset_title[0]) == dataset['title']) config[DCAT_EXPOSE_SUBCATALOGS] = 'false'
def test_subcatalog(self): publisher = {'name': 'Publisher', 'email': '*****@*****.**', 'type': 'Publisher', 'uri': 'http://pub.lish.er'} dataset = { 'id': '4b6fe9ca-dc77-4cec-92a4-55c6624a5bd6', 'name': 'test-dataset', 'title': 'test dataset', 'extras': [ {'key': 'source_catalog_title', 'value': 'Subcatalog example'}, {'key': 'source_catalog_homepage', 'value': 'http://subcatalog.example'}, {'key': 'source_catalog_description', 'value': 'Subcatalog example description'}, {'key': 'source_catalog_language', 'value': 'http://publications.europa.eu/resource/authority/language/ITA'}, {'key': 'source_catalog_modified', 'value': '2000-01-01'}, {'key': 'source_catalog_publisher', 'value': json.dumps(publisher)} ] } catalog_dict = { 'title': 'My Catalog', 'description': 'An Open Data Catalog', 'homepage': 'http://example.com', 'language': 'de', } s = RDFSerializer() g = s.g s.serialize_catalog(catalog_dict, dataset_dicts=[dataset]) # check if we have catalog->hasPart->subcatalog catalogs = list(g.triples((None, RDF.type, DCAT.Catalog,))) root = list(g.subjects(DCT.hasPart, None)) assert_true(len(catalogs)>0, catalogs) assert_true(len(root) == 1, root) root_ref = root[0] # check subcatalog subcatalogs = list(g.objects(root_ref, DCT.hasPart)) assert_true(len(subcatalogs) == 1) stitle = list(g.objects(subcatalogs[0], DCT.title)) assert_true(len(stitle) == 1) assert_true(str(stitle[0]) == 'Subcatalog example') # check dataset dataset_ref = list(g.subjects(RDF.type, DCAT.Dataset)) assert_true(len(dataset_ref) == 1) dataset_ref = dataset_ref[0] dataset_title = list(g.objects(dataset_ref, DCT.title)) assert_true(len(dataset_title) == 1) assert_true(unicode(dataset_title[0]) == dataset['title'])
def dcat_catalog_show(context, data_dict): toolkit.check_access('dcat_catalog_show', context, data_dict) query = _search_ckan_datasets(context, data_dict) dataset_dicts = query['results'] pagination_info = _pagination_info(query, data_dict) serializer = RDFSerializer(profiles=data_dict.get('profiles')) output = serializer.serialize_catalog({}, dataset_dicts, _format=data_dict.get('format'), pagination_info=pagination_info) return output
def dcat_catalog_show(context, data_dict): toolkit.check_access('dcat_catalog_show', context, data_dict) query = _search_ckan_datasets(context, data_dict) dataset_dicts = query['results'] pagination_info = _pagination_info(query, data_dict) serializer = RDFSerializer() output = serializer.serialize_catalog({}, dataset_dicts, _format=data_dict.get('format'), pagination_info=pagination_info) return output