Move three more queries into templates.
This commit is contained in:
parent
a5dfbd040a
commit
b697be2306
52
app.py
52
app.py
|
@ -61,43 +61,6 @@ find_more_props = {
|
||||||
# 'P123': 'publisher', (only 1)
|
# 'P123': 'publisher', (only 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
find_more_basic_query = '''
|
|
||||||
select distinct ?item ?image {
|
|
||||||
VALUES ?value { LIST }
|
|
||||||
?item wdt:P31 wd:Q3305213 .
|
|
||||||
?item wdt:PID ?value .
|
|
||||||
?item wdt:P18 ?image .
|
|
||||||
FILTER NOT EXISTS { ?item wdt:P180 ?depicts }
|
|
||||||
} limit LIMIT
|
|
||||||
'''
|
|
||||||
|
|
||||||
property_query = '''
|
|
||||||
select ?object ?objectLabel ?objectDescription (count(*) as ?count) {
|
|
||||||
?item wdt:P31 wd:Q3305213 .
|
|
||||||
?item wdt:P18 ?image .
|
|
||||||
?item wdt:PID ?object .
|
|
||||||
filter not exists { ?item wdt:P180 ?depicts }
|
|
||||||
optional {
|
|
||||||
?object rdfs:label ?objectLabel.
|
|
||||||
FILTER(LANG(?objectLabel) = "en").
|
|
||||||
}
|
|
||||||
optional {
|
|
||||||
?object schema:description ?objectDescription .
|
|
||||||
filter(lang(?objectDescription) = "en")
|
|
||||||
}
|
|
||||||
|
|
||||||
} group by ?object ?objectLabel ?objectDescription
|
|
||||||
order by desc(?count)
|
|
||||||
'''
|
|
||||||
|
|
||||||
painting_no_depicts_query = '''
|
|
||||||
select distinct ?item where {
|
|
||||||
?item wdt:P31 wd:Q3305213 .
|
|
||||||
?item wdt:P18 ?image .
|
|
||||||
filter not exists { ?item wdt:P180 ?depicts }
|
|
||||||
}
|
|
||||||
'''
|
|
||||||
|
|
||||||
@app.teardown_appcontext
|
@app.teardown_appcontext
|
||||||
def shutdown_session(exception=None):
|
def shutdown_session(exception=None):
|
||||||
database.session.remove()
|
database.session.remove()
|
||||||
|
@ -212,7 +175,7 @@ def property_query_page(property_id):
|
||||||
sort = request.args.get('sort')
|
sort = request.args.get('sort')
|
||||||
sort_by_name = sort and sort.lower().strip() == 'name'
|
sort_by_name = sort and sort.lower().strip() == 'name'
|
||||||
|
|
||||||
q = property_query.replace('PID', pid)
|
q = render_template('query/property.sparql', pid=pid)
|
||||||
rows = wdqs.run_query_with_cache(q, name=pid)
|
rows = wdqs.run_query_with_cache(q, name=pid)
|
||||||
|
|
||||||
no_label_qid = [row['object']['value'].rpartition('/')[2]
|
no_label_qid = [row['object']['value'].rpartition('/')[2]
|
||||||
|
@ -250,7 +213,8 @@ def start():
|
||||||
|
|
||||||
@app.route('/next')
|
@app.route('/next')
|
||||||
def random_painting():
|
def random_painting():
|
||||||
rows = wdqs.run_query_with_cache(painting_no_depicts_query)
|
q = render_template('query/painting_no_depicts.sparql')
|
||||||
|
rows = wdqs.run_query_with_cache(q)
|
||||||
has_depicts = True
|
has_depicts = True
|
||||||
while has_depicts:
|
while has_depicts:
|
||||||
item_id = wdqs.row_id(random.choice(rows))
|
item_id = wdqs.row_id(random.choice(rows))
|
||||||
|
@ -861,12 +825,10 @@ def find_more_json():
|
||||||
qid_list = request.args.getlist('qid')
|
qid_list = request.args.getlist('qid')
|
||||||
limit = 6
|
limit = 6
|
||||||
|
|
||||||
value_list = ' '.join(f'wd:{qid}' for qid in qid_list)
|
q = render_template('query/find_more_basic.sparql',
|
||||||
|
qid_list=qid_list,
|
||||||
q = (find_more_basic_query
|
pid=pid,
|
||||||
.replace('LIST', value_list)
|
limit=limit)
|
||||||
.replace('PID', pid)
|
|
||||||
.replace('LIMIT', str(limit)))
|
|
||||||
|
|
||||||
filenames = []
|
filenames = []
|
||||||
bindings = wdqs.run_query_with_cache(q, f'{pid}={",".join(qid_list)}_{limit}')
|
bindings = wdqs.run_query_with_cache(q, f'{pid}={",".join(qid_list)}_{limit}')
|
||||||
|
|
7
templates/query/find_more_basic.sparql
Normal file
7
templates/query/find_more_basic.sparql
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
select distinct ?item ?image {
|
||||||
|
values ?value { {% for qid in qid_list %} wd:{{ qid }}{% endfor %} }
|
||||||
|
?item wdt:P31 wd:Q3305213 .
|
||||||
|
?item wdt:{{ pid }} ?value .
|
||||||
|
?item wdt:P18 ?image .
|
||||||
|
filter not exists { ?item wdt:P180 ?depicts }
|
||||||
|
} limit {{ limit }}
|
5
templates/query/painting_no_depicts.sparql
Normal file
5
templates/query/painting_no_depicts.sparql
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
select distinct ?item where {
|
||||||
|
?item wdt:P31 wd:Q3305213 .
|
||||||
|
?item wdt:P18 ?image .
|
||||||
|
filter not exists { ?item wdt:P180 ?depicts }
|
||||||
|
}
|
16
templates/query/property.sparql
Normal file
16
templates/query/property.sparql
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
select ?object ?objectLabel ?objectDescription (count(*) as ?count) {
|
||||||
|
?item wdt:P31 wd:Q3305213 .
|
||||||
|
?item wdt:P18 ?image .
|
||||||
|
?item wdt:{{ pid }} ?object .
|
||||||
|
filter not exists { ?item wdt:P180 ?depicts }
|
||||||
|
optional {
|
||||||
|
?object rdfs:label ?objectLabel.
|
||||||
|
FILTER(LANG(?objectLabel) = "en").
|
||||||
|
}
|
||||||
|
optional {
|
||||||
|
?object schema:description ?objectDescription .
|
||||||
|
filter(lang(?objectDescription) = "en")
|
||||||
|
}
|
||||||
|
|
||||||
|
} group by ?object ?objectLabel ?objectDescription
|
||||||
|
order by desc(?count)
|
Loading…
Reference in a new issue