{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Basic SPARQLProg example\n", "\n", "This basic example walks through querying the Wikidata SPARQL endpoint.\n", "\n", "We make use of the wikidata module that is part of sparqlprog, and provides access to predicates such as `continent/1` (for instances of continents) and the generic `enlabel/2` (which maps an entity to it's English-language label)\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from prologterms import TermGenerator, PrologRenderer, Program, Var\n", "from sparqlprog import SPARQLProg\n", "P = TermGenerator()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "server = 'http://localhost:9083'\n", "# server = 'https://evening-falls-87315.herokuapp.com'\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "S = SPARQLProg(server=server,\n", " endpoint='wd')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### setting up a query" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# our query will join over two predicates\n", "C = Var('C')\n", "N = Var('N')\n", "query = (P.continent(C), P.enlabel(C, N)) # same as logic program query: continent(C), enlabel(C,N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### running the query\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "http://www.wikidata.org/entity/Q15 Africa\n", "http://www.wikidata.org/entity/Q18 South America\n", "http://www.wikidata.org/entity/Q46 Europe\n", "http://www.wikidata.org/entity/Q48 Asia\n", "http://www.wikidata.org/entity/Q49 North America\n", "http://www.wikidata.org/entity/Q51 Antarctica\n", "http://www.wikidata.org/entity/Q538 Oceania\n", "http://www.wikidata.org/entity/Q3960 Australia\n" ] } ], "source": [ "res = S.query(query)\n", "\n", "for r in res:\n", " print(f\"{r.C} {r.N}\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_getActualURL is firing.\n", "_getActualURL is returning http://localhost:9083/pengine/send?format=json&id=f5d0ae73-5420-4d86-9cf9-a6669cffe732\n", "http://www.wikidata.org/entity/Q114 Kenya part-of http://www.wikidata.org/entity/Q15 Africa\n", "http://www.wikidata.org/entity/Q115 Ethiopia part-of http://www.wikidata.org/entity/Q15 Africa\n", "http://www.wikidata.org/entity/Q79 Egypt part-of http://www.wikidata.org/entity/Q15 Africa\n", "http://www.wikidata.org/entity/Q262 Algeria part-of http://www.wikidata.org/entity/Q15 Africa\n", "http://www.wikidata.org/entity/Q258 South Africa part-of http://www.wikidata.org/entity/Q15 Africa\n", "http://www.wikidata.org/entity/Q657 Chad part-of http://www.wikidata.org/entity/Q15 Africa\n", "http://www.wikidata.org/entity/Q117 Ghana part-of http://www.wikidata.org/entity/Q15 Africa\n", "http://www.wikidata.org/entity/Q924 Tanzania part-of http://www.wikidata.org/entity/Q15 Africa\n" ] } ], "source": [ "C = Var('C')\n", "D = Var('D')\n", "CN = Var('CN')\n", "DN = Var('DN')\n", "\n", "query = (\n", " P.country(D),\n", " P.part_of_continent(D,C),\n", " P.continent(C),\n", " P.enlabel(D,DN),\n", " P.enlabel(C,CN)\n", " )\n", "\n", "res = S.query(query)\n", "for r in list(res)[0:8]:\n", " print(f\"{r.D} {r.DN} part-of {r.C} {r.CN}\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_getActualURL is firing.\n", "_getActualURL is returning http://localhost:9083/pengine/send?format=json&id=16b08d3a-9cf9-49ee-b19a-64a0acc3b297\n" ] } ], "source": [ "df = S.query_to_dataframe(query)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CCNDDN
0http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q114Kenya
1http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q115Ethiopia
2http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q79Egypt
3http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q262Algeria
4http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q258South Africa
5http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q657Chad
6http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q117Ghana
7http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q924Tanzania
8http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q916Angola
9http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q912Mali
10http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q747314Bechuanaland Protectorate
11http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q929Central African Republic
12http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q948Tunisia
13http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q945Togo
14http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q954Zimbabwe
15http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q953Zambia
16http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q958South Sudan
17http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q962Benin
18http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q963Botswana
19http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q967Burundi
20http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q970Comoros
21http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q971Republic of the Congo
22http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q974Democratic Republic of the Congo
23http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q977Djibouti
24http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q1005Gambia
25http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q986Eritrea
26http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q1006Guinea
27http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q1007Guinea-Bissau
28http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q1008Ivory Coast
29http://www.wikidata.org/entity/Q15Africahttp://www.wikidata.org/entity/Q1009Cameroon
...............
138http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q778Bahamas
139http://www.wikidata.org/entity/Q48Asiahttp://www.wikidata.org/entity/Q917Bhutan
140http://www.wikidata.org/entity/Q48Asiahttp://www.wikidata.org/entity/Q921Brunei
141http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q781Antigua and Barbuda
142http://www.wikidata.org/entity/Q48Asiahttp://www.wikidata.org/entity/Q928Philippines
143http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q783Honduras
144http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q784Dominica
145http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q790Haiti
146http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q786Dominican Republic
147http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q792El Salvador
148http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q811Nicaragua
149http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q800Costa Rica
150http://www.wikidata.org/entity/Q49North Americahttp://www.wikidata.org/entity/Q756617Kingdom of Denmark
151http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q664New Zealand
152http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q30United States of America
153http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q408Australia
154http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q685Solomon Islands
155http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q672Tuvalu
156http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q697Nauru
157http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q686Vanuatu
158http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q683Samoa
159http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q709Marshall Islands
160http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q691Papua New Guinea
161http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q712Fiji
162http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q702Federated States of Micronesia
163http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q695Palau
164http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q710Kiribati
165http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q16644Northern Mariana Islands
166http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q26988Cook Islands
167http://www.wikidata.org/entity/Q538Oceaniahttp://www.wikidata.org/entity/Q34020Niue
\n", "

168 rows × 4 columns

\n", "
" ], "text/plain": [ " C CN \\\n", "0 http://www.wikidata.org/entity/Q15 Africa \n", "1 http://www.wikidata.org/entity/Q15 Africa \n", "2 http://www.wikidata.org/entity/Q15 Africa \n", "3 http://www.wikidata.org/entity/Q15 Africa \n", "4 http://www.wikidata.org/entity/Q15 Africa \n", ".. ... ... \n", "163 http://www.wikidata.org/entity/Q538 Oceania \n", "164 http://www.wikidata.org/entity/Q538 Oceania \n", "165 http://www.wikidata.org/entity/Q538 Oceania \n", "166 http://www.wikidata.org/entity/Q538 Oceania \n", "167 http://www.wikidata.org/entity/Q538 Oceania \n", "\n", " D DN \n", "0 http://www.wikidata.org/entity/Q114 Kenya \n", "1 http://www.wikidata.org/entity/Q115 Ethiopia \n", "2 http://www.wikidata.org/entity/Q79 Egypt \n", "3 http://www.wikidata.org/entity/Q262 Algeria \n", "4 http://www.wikidata.org/entity/Q258 South Africa \n", ".. ... ... \n", "163 http://www.wikidata.org/entity/Q695 Palau \n", "164 http://www.wikidata.org/entity/Q710 Kiribati \n", "165 http://www.wikidata.org/entity/Q16644 Northern Mariana Islands \n", "166 http://www.wikidata.org/entity/Q26988 Cook Islands \n", "167 http://www.wikidata.org/entity/Q34020 Niue \n", "\n", "[168 rows x 4 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }