<jupyter_start><jupyter_text>SKL / SKR*Lesson learned:* SKR har bara laddat upp test data för något år sedan och verkar inte driva Öppen data och har inte satt licens... --> går *ej att använda* på Wikipedia Wikidata ---- Test accessa SKL / SKR Öppen data från [catalog.skl.se](https://catalog.skl.se/rowstore/dataset/03c90666-e53c-49af-bde1-8336fc59dff6/html) / [dataportal.se](https://www.dataportal.se) / [europeandataportal](https://www.europeandataportal.eu) för att skapa bättre data i Wikidata för kommuner se [karta](https://w.wiki/V4o) med data vi har idag  * denna [Jupyter Notebook](https://github.com/salgo60/open-data-examples/blob/master/SKL%20data.ipynb)   Skördning europeandataportal  som literals bör vara linked dataDatat i dataportalen.se skickas till Europeandataportalen.   Det antipattern jag ser är att saker skickas som literals med språktag. Korrekt vore att använda *samma som* och [Länkade data](https://sv.wikipedia.org/wiki/L%C3%A4nkade_data) så att kunskapsgrafer med kopplingar mellan dataseten kan göras... jmf. [citation graphs](https://minancestry.blogspot.com/2020/06/kunskapsdatabaser-for-slaktforskning.htmlcitationgraph) för vetenskapliga publikationerse exempel [rdf](https://www.europeandataportal.eu/data/api/datasets/https-catalog-skl-se-store-1-resource-50.rdf?useNormalizedId=true&locale=sv) extrakt nedan att * Kommunkod beskrivs som ** lang="sv" kommunkod ** korrekt vore samma som [WD:Q23003](https://www.wikidata.org/wiki/Q23003) där beskriving [finns på 23 språk vad kommunkod är](https://www.wikidata.org/wiki/Q23003sitelinks-wikipedia)```Kommunkodhttps://catalog.skl.se/store/1/resource/166Kommunkod, kommun och befolkning.Kommunkoder_csvtext/csv2019-04-11T10:46:50+02:00```  LicensLicensen på datat är väldigt otydlig från SKR skickat email 2020-06-24 SKR vad som gäller och om det är [CC-0](https://creativecommons.org/share-your-work/public-domain/cc0/) se krav för att kunna vara del av Wikipedia/Wikidata  * [Wikidata:Licensing](https://www.wikidata.org/wiki/Wikidata:Licensing)   * [Wikipedia:Att återanvända material från Wikipedia](https://sv.wikipedia.org/wiki/Wikipedia:Att_%C3%A5teranv%C3%A4nda_material_fr%C3%A5n_Wikipedia)* video [Creative Commons licences explained](https://www.youtube.com/watch?v=AeTlXtEOplA)  Det enda om licens på SKR datat jag hittat var* [www.europeandataportal.eu](https://www.europeandataportal.eu/data/datasets/https-catalog-skl-se-store-1-resource-50?locale=sv) där det står "Licens ej angiven"  * [www.dataportalen.se](https://www.dataportal.se/sv/datasets/653_26835/kommunkoder) står inget endast "Åtkomsträttigheter Publik"    SVAR SKR ingen licens skapad och Öppen data verkar inte vara prioriterat... _"När vi lade ut de här dataseten för några år sedan så var det vårt pilotprojekt__med öppna data. Tyvärr så kom vi aldrig så långt i organisationen att vi lyckades få till ståndatt sätta licens på dataseten."_   Kommunkoder * [catalog.skl.se/catalog/1/datasets/50](https://catalog.skl.se/catalog/1/datasets/50) * [www.dataportal.se](https://www.dataportal.se/sv/datasets/653_26835/kommunkoder) * [www.europeandataportal.eu](https://www.europeandataportal.eu/data/datasets/https-catalog-skl-se-store-1-resource-50?locale=sv)<jupyter_code>import urllib3, json
import pandas as pd 
http = urllib3.PoolManager() 
pd.set_option("display.max.columns", None) 
 
url = "https://catalog.skl.se/rowstore/dataset/8621fe21-0120-407e-a81f-705ef45f76d2" 
header = {'Accept': 'application/json'}
r = http.request('GET', url)
#print(r.data)
data = json.loads(r.data)
df = pd.DataFrame(data["results"]) 


df
df.describe()
df.info()
%matplotlib inline  
import matplotlib.pyplot as plt 
df["folkmängd 31 december 2018"].str.replace(" ","").astype(int).plot.bar() 
plt.show()<jupyter_output><empty_output><jupyter_text>Länskoder * [catalog.skl.se datasets 38](https://catalog.skl.se/catalog/1/datasets/38) * [dataportal.se datasets/653_26811](https://www.dataportal.se/sv/datasets/653_26811/kontaktuppgifter-till-kommunerna) * [www.europeandataportal.eu](https://www.europeandataportal.eu/data/datasets/https-catalog-skl-se-store-1-resource-38?locale=sv)<jupyter_code>url_lan = "https://catalog.skl.se/rowstore/dataset/4e7a4004-9ebb-4ae7-8346-9f573aba3951"
r_l = http.request('GET', url_lan)
#print(r.data)
data_l = json.loads(r_l.data)
dfLan = pd.DataFrame(data_l["results"])
dfLan
dfLan["folkmängd 31 december 2018"].str.replace(" ","").astype(int).plot.bar() 
plt.show()
dfLan["folkmängd 31 december 2018"].str.replace(" ","").astype(int).plot.pie() 
plt.show()<jupyter_output><empty_output><jupyter_text>Kontaktuppgifter Kommun * [catalog.skl.se datasets 38](https://catalog.skl.se/catalog/1/datasets/38) * [dataportal.se datasets/653_26811](https://www.dataportal.se/sv/datasets/653_26811/kontaktuppgifter-till-kommunerna) * [www.europeandataportal.eu datasets https-catalog-skl-se-store-1-resource-38](https://www.europeandataportal.eu/data/datasets/https-catalog-skl-se-store-1-resource-38?locale=sv) * licens?<jupyter_code>url_kommunKontakt = "https://catalog.skl.se/store/1/resource/262"
c=pd.read_csv(url_kommunKontakt, encoding ='latin1',skiprows = 0,sep=';')
c<jupyter_output><empty_output><jupyter_text>Wikidata<jupyter_code># pip install sparqlwrapper
# https://rdflib.github.io/sparqlwrapper/
# see https://lawlesst.github.io/notebook/sparql-dataframe.html 

import sys
from SPARQLWrapper import SPARQLWrapper, JSON

endpoint_url = "https://query.wikidata.org/sparql"

query = """SELECT DISTINCT ?item ?itemLabel ?kommunkod ?phone ?email WHERE {
  ?item wdt:P31 wd:Q127448.
  OPTIONAL { ?item wdt:P525 ?kommunkod. }
  OPTIONAL { ?item wdt:P968 ?email. }
  OPTIONAL { ?item wdt:P1329 ?phone. }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "sv,en". }
}
ORDER BY (?itemLabel)"""


def get_results_dataframe(endpoint_url, query):
    user_agent = "WDQS-example Python User salgo60/%s.%s" % (sys.version_info[0], sys.version_info[1])
    sparql = SPARQLWrapper(endpoint_url, agent=user_agent)
    sparql.setQuery(query)
    sparql.setReturnFormat(JSON)
    return sparql.query().convert()

# SPARQL https://w.wiki/V7J
results = get_results(endpoint_url, query)
column_names = ["WD", "Label", "Kommunkod","Phone","Email"]
dfWDKommun = pd.DataFrame(columns = column_names) 

cols = processed_results['head']['vars']

WDresult = []
for result in results["results"]["bindings"]:
    print(result["itemLabel"]["value"],result["item"]["value"],result["kommunkod"]["value"]) 

    
    item = [] 
    for c in cols 
    dfWDKommun.append({'WD': result["item"]["value"], 
                       'Label': result["itemLabel"]["value"],
                       'Kommunkod' 
                      }, ignore_index=True)

    if 'phone' in result:
        print ("\t",result["phone"]["value"])
    else:
        print ("\t\tMissing Phone")
    if 'email' in result:
        print ("\t",result["email"]["value"])
    else:
        print ("\t\tMissing Email")<jupyter_output><empty_output><jupyter_text>Kontaktuppgifter regioner * https://catalog.skl.se/catalog/1/datasets/55* [www.dataportal.se/sv/datasets/653_26843/kontaktuppgifter-till-regioner](https://www.dataportal.se/sv/datasets/653_26843/kontaktuppgifter-till-regioner)  * [www.europeandataportal.eu](https://www.europeandataportal.eu/data/datasets/https-catalog-skl-se-store-1-resource-55?locale=sv)<jupyter_code>url_regionKontakt = "https://catalog.skl.se/store/1/resource/252"
region=pd.read_csv(url_regionKontakt, encoding ='latin1',skiprows = 0,sep=';')
region<jupyter_output><empty_output><jupyter_text>Wikidata<jupyter_code>import sys
from SPARQLWrapper import SPARQLWrapper, JSON

endpoint_url = "https://query.wikidata.org/sparql"

query = """SELECT DISTINCT ?item ?itemLabel ?phone ?email ?www ?population ?twitter ?FB ?Instagram WHERE {
  ?item wdt:P31 wd:Q1754161.
  OPTIONAL {?item wdt:P856 ?www}
  OPTIONAL {?item wdt:P968 ?email}
  OPTIONAL {?item wdt:P1329 ?phone}
  OPTIONAL {?item wdt:P1082 ?population}
  OPTIONAL {?item wdt:P2002 ?twitter}
  OPTIONAL {?item wdt:P2013 ?FB}
  OPTIONAL {?item wdt:P2003 ?Instagram}
SERVICE wikibase:label { bd:serviceParam wikibase:language "sv,en". }
}
ORDER BY (?layer)"""


def get_results(endpoint_url, query):
    user_agent = "User salgo60/%s.%s" % (sys.version_info[0], sys.version_info[1])
    # TODO adjust user agent; see https://w.wiki/CX6
    sparql = SPARQLWrapper(endpoint_url, agent=user_agent)
    sparql.setQuery(query)
    sparql.setReturnFormat(JSON)
    return sparql.query().convert()


results = get_results(endpoint_url, query)

for result in results["results"]["bindings"]:
    print(result)<jupyter_output>{'item': {'type': 'uri', 'value': 'http://www.wikidata.org/entity/Q3231208'}, 'itemLabel': {'xml:lang': 'sv', 'type': 'literal', 'value': 'Region Blekinge'}, 'phone': {'type': 'literal', 'value': '+46-455-73 10 00'}, 'email': {'type': 'uri', 'value': 'mailto:<EMAIL>'}, 'www': {'type': 'uri', 'value': 'https://regionblekinge.se'}}
{'item': {'type': 'uri', 'value': 'http://www.wikidata.org/entity/Q3231325'}, 'itemLabel': {'xml:lang': 'sv', 'type': 'literal', 'value': 'Region Dalarna'}, 'phone': {'type': 'literal', 'value': '+46-23-49 00 00'}, 'email': {'type': 'uri', 'value': 'mailto:<EMAIL>'}, 'www': {'type': 'uri', 'value': 'https://www.regiondalarna.se'}}
{'item': {'type': 'uri', 'value': 'http://www.wikidata.org/entity/Q3231382'}, 'itemLabel': {'xml:lang': 'sv', 'type': 'literal', 'value': 'Region Gävleborg'}, 'phone': {'type': 'literal', 'value': '+46-026-15 40 00'}, 'email': {'type': 'uri', 'value': 'mailto:<EMAIL>'}, 'www': {'[...]
{'fraction_non_alphanumeric': 0.16497965146613797, 'fraction_numerical': 0.0399666075341751, 'mean_word_length': 5.402137608550434, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 28, 'https://': 41, 'lorem ipsum': 0, 'www.': 34, 'xml': 3}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '341040', 'license': 'MIT', 'n_tokens_mistral': 3920, 'n_tokens_neox': 3646, 'n_words': 634, 'path': 'SKL data.ipynb', 'repo_name': 'salgo60/open-data-examples', 'size': '9638'}