From 68a6f7b5cbaee15e765aab8ab0a05e072f4c63c7 Mon Sep 17 00:00:00 2001 From: Your Name <you@example.com> Date: Wed, 12 Jul 2017 00:16:04 +0200 Subject: [PATCH] sparql support --- Sparql.py | 89 ++++++++++++++++++++++++++++++ __pycache__/Sparql.cpython-35.pyc | Bin 0 -> 3109 bytes api.py | 1 + 3 files changed, 90 insertions(+) create mode 100644 Sparql.py create mode 100644 __pycache__/Sparql.cpython-35.pyc diff --git a/Sparql.py b/Sparql.py new file mode 100644 index 0000000..f562f3d --- /dev/null +++ b/Sparql.py @@ -0,0 +1,89 @@ +from SPARQLWrapper import SPARQLWrapper, JSON +from flask import jsonify +sparql = SPARQLWrapper("http://dbpedia.org/sparql") + + +#Bekommt den Namen des Kuenstlers +#Gibt einen Tupel (Name, Geschlecht, Geburtsdatum, Todesdatum, Beschreibung) zurueck +def sendSparqlQuery(name): + if "(" in name: + name = name.split(" (")[0] + print("Name :" + name+": ") + results = send(name) + print("Empfange") + test = results['results']['bindings'] + print(len(test)) + if(len(test) >= 1): + tests = test + for test in tests: + name = test['name']['value'] + gender = test['gender']['value'] + birth = test['birth']['value'] + death = test['death']['value'] + description = test['description']['value'] + return (name, gender, birth, death, description) + else: + return ("No Information", "No Information", "No Information", "No Information", "No Information") + + + + + +def send(name): + print("Bearbeite") + print(""" + PREFIX owl: <http://www.w3.org/2002/07/owl#> + PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> + PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> + PREFIX foaf: <http://xmlns.com/foaf/0.1/> + PREFIX dc: <http://purl.org/dc/elements/1.1/> + PREFIX : <http://dbpedia.org/resource/> + PREFIX dbpedia2: <http://dbpedia.org/property/> + PREFIX dbpedia: <http://dbpedia.org/> + PREFIX skos: <http://www.w3.org/2004/02/skos/core#> + PREFIX dbo: <http://dbpedia.org/ontology/># + + + select ?person ?name ?birth ?description where { + ?person a dbo:Person ; + foaf:name ?name ; + dbo:birthDate ?birth ; + dbo:abstract ?description + filter langMatches(lang(?description),'en') + + FILTER regex(str(?name), """+ "\"" + name+ "\"" +""") + } + order by ?person + """) + sparql.setQuery(""" + PREFIX owl: <http://www.w3.org/2002/07/owl#> + PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> + PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> + PREFIX foaf: <http://xmlns.com/foaf/0.1/> + PREFIX dc: <http://purl.org/dc/elements/1.1/> + PREFIX : <http://dbpedia.org/resource/> + PREFIX dbpedia2: <http://dbpedia.org/property/> + PREFIX dbpedia: <http://dbpedia.org/> + PREFIX skos: <http://www.w3.org/2004/02/skos/core#> + PREFIX dbo: <http://dbpedia.org/ontology/># + + + select ?person ?name ?gender ?birth ?death ?description where { + ?person a dbo:Person ; + foaf:name ?name ; + foaf:gender ?gender; + dbo:birthDate ?birth ; + dbo:deathDate ?death; + dbo:abstract ?description + filter langMatches(lang(?description),'en') + + FILTER regex(str(?name), """+ "\"" + name+ "\"" +""") + } + order by ?person + """) + sparql.setReturnFormat(JSON) + return sparql.query().convert() + + diff --git a/__pycache__/Sparql.cpython-35.pyc b/__pycache__/Sparql.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d2bbfed60a3c177c4aaf76737bb2fadd4ed36ed GIT binary patch literal 3109 zcmWgV<>h+nn;MzT!@%&E0SPcMFfceUFfbJRF)%QsFfgPrGUPBY<T5ZsF)-vZGDI;l zFoHyx7;=~xa+w*Tm>C#T85mNS8JZaxqF5MGSQt`R8Cn<^qF5PH*cejS!E82$6b^=9 zP0p7fi!_;T@dgJt1_k<r7bO-Hq!!&`@e20$(`3BGo>iQmmzh>sC7DrDQedU8pORFN znv$8QmtT~wUtEw_RG5>@2r`0!fq{d8fq{*Ifx#K%*7qQ{GBVUKFl4ha6v=}aSquy* zOdv<4Ff&NjGBA`dg4|Zaz#yK&${^m%$iP^_1X9<`$WY4&mSqE}W~^ZZIa)G>gF&*E z2_#;^%uoY12&@OjN#SJ3W@RXP4w9>7W~j(!s9|PsiH%{XWdaGMa4|@xaDy$bVPZ(( zf$~_ua=cI;E11Uz<*|Wz{7@b{$Za(&3^l9_HEawu><nqF48h@fEDR}v48bW348fX0 ze!mzss+bfsia<e9#paioo2p<{#bl)r#o?M;kd~O2o_dSDD7CmWr=&QFBPla4B{MI* z_$5g7Etb5*+|*mFWr;bZskhkDQ}a?%i*B(dWfqlW++s~hO)SZ{#hsE`oLrPyP?DLS z_lwUjU%@jkEx#x?5yaPIE#hNfV8BLbvfN@VF38C&xy4#gl$lp@i={X<FXa|<PHLVe zM-eF2ia^nJi=`yBxa1Zqh%7GR0vW~)B6vUqF9QR^N`@j)1_p*-^7<M1xvBd3Ihkdt zMfwrGKDr^P$r<{=;MAa3P<e|VWIlu&SejZ?39_PC36x40c^HKmg&27lxfuBv1sH`G z*%)~l`QT8TsYslGfdQVPKmo%HOHpwQ3=AdU)DMn!aAHbfW)KG_AZ7;f6c%VAVr0l- z0wsA|lFSSxEZ~Gy!pM-t%FxWfki`ZfgEiUwqBxyW6N{2kGfPqvr!q4za48^xfFM^l z&j^M5@*FD#8)$wgFE7_CHwI@1BLf2?eFJm-{PG-SJGe%uri$VeT$&6)VHlj8k(!%` zsjny{tr(X^1APNS{i2jK-D2FDvFbInw6xSWFw!?N(gka;%qvN((9J8xv_36AF%4lv zMQ%=Bv0ie1u0BXy-$2h$AH$<5$q4lYrA0a5ph-#APt8fqP0cGQ);Gka3!w+OfGJ8X z&Mz%WPQ_viq!=>7uCJgdzaX`!q!On-?AkE=Qk<QSGw@A70SHo{pPXNmiWzb#N%`1q z$<Hgv&&f}()VEXS;({lW;?$hf<Prt@g4Cko{5%DFP-&oG56=Dy_DK0&p*$nCC{>{v zu2BK5Cs6@pX8^<iYa|7*Bn*l)D~Q2h5}O*35nx+g5=&BH4#1@_F{!wuC=ujrWEVoL zL$W_DGp8iANFgUNFWon>Bsn9sSOdh?K=zlWj(TdIx+Wq(6cpS%eL`G=6pB*QQ!6xz zONunWfugCS@QYEYN>>wZK`oq>UzCzsq>xkz3lg|Q;^)!4tN@OFc)>NAml4G_UGg%d zN{3}BdvKLb*Q^bWf0!#EG_H(IbO`|V1*E6|GjSO>KqZAHdyxPG1H&ygNK-Y6qd2t$ z+$4$OFHS89N-ZfZ%5wuZp^8B5j9aXQp!Uiw_T>D$vecpyO-4xb2-NHWw|$DlK#d_m z1_lNNP$O3e+@|4TWESOT=3rzK2a&vtMId=UP4*&C!yRgFT25kdb`c9mw<L%FHFLn~ hAjYCvaErqxH$SB`C)Ezr04fGGpTrmi7<pKEBmho*4<Y~n literal 0 HcmV?d00001 diff --git a/api.py b/api.py index a784e24..46f9525 100644 --- a/api.py +++ b/api.py @@ -1,6 +1,7 @@ from flask import Flask, request, jsonify, make_response, g, render_template from flask_cors import CORS import BaseXClient +from Sparql import sendSparqlQuery import threading import xml.etree.ElementTree as ET import xml.dom.minidom as dom -- GitLab