reorganize project

This commit is contained in:
2026-06-14 12:02:51 +02:00
parent a454255a45
commit 59ebcf9c60
6 changed files with 18 additions and 3 deletions
+1
View File
@@ -0,0 +1 @@
# resspublica/__init__.py
+19
View File
@@ -0,0 +1,19 @@
from SPARQLWrapper import SPARQLWrapper, JSON
from feedgen.feed import FeedGenerator
from importlib.resources import files
def generateFederalFeed():
sparql = SPARQLWrapper("https://cached.lindas.admin.ch/sparql")
query = files("resspublica").joinpath(
"queries/federalPopularInitiatives.sparql"
).read_text()
sparql.setQuery(query)
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
print(results)
def main():
generateFederalFeed()
@@ -0,0 +1,45 @@
PREFIX schema: <http://schema.org/>
SELECT
?id
?date
(GROUP_CONCAT(DISTINCT IF(LANG(?title)="fr", STR(?title), ""); separator=" || ") AS ?title_fr)
(GROUP_CONCAT(DISTINCT IF(LANG(?title)="de", STR(?title), ""); separator=" || ") AS ?title_de)
(GROUP_CONCAT(DISTINCT IF(LANG(?title)="it", STR(?title), ""); separator=" || ") AS ?title_it)
(GROUP_CONCAT(DISTINCT IF(LANG(?status)="fr", STR(?status), ""); separator=" || ") AS ?status_fr)
(GROUP_CONCAT(DISTINCT IF(LANG(?status)="de", STR(?status), ""); separator=" || ") AS ?status_de)
(GROUP_CONCAT(DISTINCT IF(LANG(?status)="it", STR(?status), ""); separator=" || ") AS ?status_it)
(GROUP_CONCAT(DISTINCT IF(LANG(?initiativtext)="fr", STR(?initiativtext), ""); separator=" || ") AS ?text_fr)
(GROUP_CONCAT(DISTINCT IF(LANG(?initiativtext)="de", STR(?initiativtext), ""); separator=" || ") AS ?text_de)
(GROUP_CONCAT(DISTINCT IF(LANG(?initiativtext)="it", STR(?initiativtext), ""); separator=" || ") AS ?text_it)
(GROUP_CONCAT(DISTINCT IF(LANG(?artikel)="fr", STR(?artikel), ""); separator=" || ") AS ?artikel_fr)
(GROUP_CONCAT(DISTINCT IF(LANG(?artikel)="de", STR(?artikel), ""); separator=" || ") AS ?artikel_de)
(GROUP_CONCAT(DISTINCT IF(LANG(?artikel)="it", STR(?artikel), ""); separator=" || ") AS ?artikel_it)
WHERE {
<https://politics.ld.admin.ch/political-rights/popular-initiative/1>
<https://cube.link/observationSet> ?obsSet .
?obsSet <https://cube.link/observation> ?source .
?source
<https://politics.ld.admin.ch/political-rights/popular-initiative/id> ?id ;
<https://politics.ld.admin.ch/political-rights/popular-initiative/sammelbeginn> ?date ;
<https://politics.ld.admin.ch/political-rights/popular-initiative/titel> ?titleUri ;
<https://politics.ld.admin.ch/political-rights/popular-initiative/status> ?statusUri ;
<https://politics.ld.admin.ch/political-rights/popular-initiative/initiativtext> ?textUri ;
<https://politics.ld.admin.ch/political-rights/popular-initiative/artikelBv> ?articleUri .
?titleUri schema:name ?title .
?statusUri schema:name ?status .
OPTIONAL { ?textUri schema:name ?initiativtext . }
OPTIONAL { ?articleUri schema:name ?artikel . }
}
GROUP BY ?id ?date
ORDER BY DESC(?date)
LIMIT 100