{ "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", " | C | \n", "CN | \n", "D | \n", "DN | \n", "
---|---|---|---|---|
0 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q114 | \n", "Kenya | \n", "
1 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q115 | \n", "Ethiopia | \n", "
2 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q79 | \n", "Egypt | \n", "
3 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q262 | \n", "Algeria | \n", "
4 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q258 | \n", "South Africa | \n", "
5 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q657 | \n", "Chad | \n", "
6 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q117 | \n", "Ghana | \n", "
7 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q924 | \n", "Tanzania | \n", "
8 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q916 | \n", "Angola | \n", "
9 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q912 | \n", "Mali | \n", "
10 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q747314 | \n", "Bechuanaland Protectorate | \n", "
11 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q929 | \n", "Central African Republic | \n", "
12 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q948 | \n", "Tunisia | \n", "
13 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q945 | \n", "Togo | \n", "
14 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q954 | \n", "Zimbabwe | \n", "
15 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q953 | \n", "Zambia | \n", "
16 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q958 | \n", "South Sudan | \n", "
17 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q962 | \n", "Benin | \n", "
18 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q963 | \n", "Botswana | \n", "
19 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q967 | \n", "Burundi | \n", "
20 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q970 | \n", "Comoros | \n", "
21 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q971 | \n", "Republic of the Congo | \n", "
22 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q974 | \n", "Democratic Republic of the Congo | \n", "
23 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q977 | \n", "Djibouti | \n", "
24 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q1005 | \n", "Gambia | \n", "
25 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q986 | \n", "Eritrea | \n", "
26 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q1006 | \n", "Guinea | \n", "
27 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q1007 | \n", "Guinea-Bissau | \n", "
28 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q1008 | \n", "Ivory Coast | \n", "
29 | \n", "http://www.wikidata.org/entity/Q15 | \n", "Africa | \n", "http://www.wikidata.org/entity/Q1009 | \n", "Cameroon | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
138 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q778 | \n", "Bahamas | \n", "
139 | \n", "http://www.wikidata.org/entity/Q48 | \n", "Asia | \n", "http://www.wikidata.org/entity/Q917 | \n", "Bhutan | \n", "
140 | \n", "http://www.wikidata.org/entity/Q48 | \n", "Asia | \n", "http://www.wikidata.org/entity/Q921 | \n", "Brunei | \n", "
141 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q781 | \n", "Antigua and Barbuda | \n", "
142 | \n", "http://www.wikidata.org/entity/Q48 | \n", "Asia | \n", "http://www.wikidata.org/entity/Q928 | \n", "Philippines | \n", "
143 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q783 | \n", "Honduras | \n", "
144 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q784 | \n", "Dominica | \n", "
145 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q790 | \n", "Haiti | \n", "
146 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q786 | \n", "Dominican Republic | \n", "
147 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q792 | \n", "El Salvador | \n", "
148 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q811 | \n", "Nicaragua | \n", "
149 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q800 | \n", "Costa Rica | \n", "
150 | \n", "http://www.wikidata.org/entity/Q49 | \n", "North America | \n", "http://www.wikidata.org/entity/Q756617 | \n", "Kingdom of Denmark | \n", "
151 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q664 | \n", "New Zealand | \n", "
152 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q30 | \n", "United States of America | \n", "
153 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q408 | \n", "Australia | \n", "
154 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q685 | \n", "Solomon Islands | \n", "
155 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q672 | \n", "Tuvalu | \n", "
156 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q697 | \n", "Nauru | \n", "
157 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q686 | \n", "Vanuatu | \n", "
158 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q683 | \n", "Samoa | \n", "
159 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q709 | \n", "Marshall Islands | \n", "
160 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q691 | \n", "Papua New Guinea | \n", "
161 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q712 | \n", "Fiji | \n", "
162 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q702 | \n", "Federated States of Micronesia | \n", "
163 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q695 | \n", "Palau | \n", "
164 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q710 | \n", "Kiribati | \n", "
165 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q16644 | \n", "Northern Mariana Islands | \n", "
166 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q26988 | \n", "Cook Islands | \n", "
167 | \n", "http://www.wikidata.org/entity/Q538 | \n", "Oceania | \n", "http://www.wikidata.org/entity/Q34020 | \n", "Niue | \n", "
168 rows × 4 columns
\n", "