{ "cells": [ { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "import requests\n", "import pandas as pd\n", "from SPARQLWrapper import SPARQLWrapper, JSON\n", "import json" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set the SPARQL-Endpoint:\n", "* https://lod.onb.ac.at/sparql/anno for ANNO\n", "* https://lod.onb.ac.at/sparql/akon for AKON" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "anno_lod_endpoint = \"https://lod.onb.ac.at/sparql/anno\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Methods to query the endpoint and build the dataframe:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def get_sparql_result(service, query):\n", " sparql = SPARQLWrapper(service)\n", " sparql.setQuery(query)\n", " sparql.setReturnFormat(JSON)\n", " return sparql.query()\n", "\n", "def get_sparql_dataframe(service, query):\n", " result = get_sparql_result(service, query)\n", "\n", " processed_results = result.convert()\n", " cols = processed_results['head']['vars']\n", "\n", " out = []\n", " for row in processed_results['results']['bindings']:\n", " item = []\n", " for c in cols:\n", " item.append(row.get(c, {}).get('value'))\n", " out.append(item)\n", "\n", " return pd.DataFrame(out, columns=cols)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Select all newspapers and periodicals with subjectheading Statistik:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "query = '''\n", "PREFIX dc: \n", "PREFIX edm: \n", "PREFIX dcterms: \n", "SELECT ?title ?subjectURI ?manifest \n", "WHERE {?subjectURI dc:subject .\n", " ?subjectURI dc:title ?title .\n", " ?subjectURI edm:isShownBy ?firstpage .\n", " ?subjectURI edm:rights .\n", " ?firstpage dcterms:isReferencedBy ?manifest\n", "}'''" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get list of IIIF Manifests URLs:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['http://iiif.onb.ac.at/presentation/ANNO/stm1875ag0001/manifest',\n", " 'http://iiif.onb.ac.at/presentation/ANNO/stm1876ag0001/manifest',\n", " 'http://iiif.onb.ac.at/presentation/ANNO/stm1877ag0001/manifest']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = get_sparql_dataframe(anno_lod_endpoint, query)\n", "manifests = list(df['manifest'])\n", "manifests" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Function to create a SACHA Collection (https://iiif.onb.ac.at/api#_collectionspostjsonprocessor):" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "def create_collection(description, list_of_manifest_ids_or_ids):\n", " j = {\n", " \"description\": description,\n", " \"elements\": list_of_manifest_ids_or_ids\n", " }\n", " creation_link = 'https://iiif.onb.ac.at/presentation/collection'\n", " result = requests.post(creation_link, json=j)\n", " if result.status_code == 201:\n", " print('SUCCESS: Create collection {}'.format(result.json()['url']))\n", " elif result.status_code == 400:\n", " print('ERROR: Request error creating collection')\n", " print(result.text)\n", " elif result.status_code == 500:\n", " print('ERROR: Server error creating collection')\n", " print(result.text)\n", " else:\n", " print('ERROR: General error creating collection, HTTP status = {}'.format(result.status_code))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create the SACHA Collection:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SUCCESS: Create collection https://iiif.onb.ac.at/presentation/collection/8hIOHDd7hW\n" ] } ], "source": [ "create_collection(\"newspaper with subject heading Statistik\", manifests)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }