query-dfec025ce29ce2ad8865a0c56b2851f3

rq turtle/ttl

second query - parties presumed as only one value for party is set on the item, and there are no date qualifiers to suggest it changed select distinct ?mp ?mpLabel ?seatLabel ?start ?end ?presumed_single_partyLabel ?historic_hansard WHERE {
?position wdt:P279 wd:Q16707842 . ?mp p:P39 ?positionStatement . ?positionStatement ps:P39 ?position ; pq:P768 ?seat ; pq:P580 ?start ; pq:P582 ?end . bind(year(?start) as ?startyear) . bind(year(?end) as ?endyear) . filter (?startyear < 2005) . filter not exists { ?positionStatement pq:P4100 ?known_party . } # there is no party known during this specific time frame ?mp p:P102 ?partyStatement1 . ?partyStatement1 ps:P102 ?presumed_single_party . filter not exists { ?mp p:P102 ?partyStatement2. FILTER(?partyStatement1 != ?partyStatement2) } . filter not exists { ?partyStatement1 pq:P580 ?startTime. } . filter not exists { ?partyStatement1 pq:P582 ?endTime. } . # presumed_single_party is calculated for items that have no dates, and only one value present { SELECT distinct ?mp (GROUP_CONCAT(distinct ?hh; separator="; ") as ?historic_hansard) WHERE { ?position wdt:P279 wd:Q16707842 . ?mp p:P39 ?positionStatement . ?positionStatement ps:P39 ?position . optional { ?mp wdt:P2015 ?hh . } } group by ?mp } # find Historic Hansard IDs SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

Use at

PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX bd: <http://www.bigdata.com/rdf#>
# second query - parties presumed as only one value for party is set on the item, and there are no date qualifiers to suggest it changed
select distinct ?mp ?mpLabel ?seatLabel ?start ?end ?presumed_single_partyLabel ?historic_hansard
WHERE {  
  ?position wdt:P279 wd:Q16707842 . ?mp p:P39 ?positionStatement .
  ?positionStatement ps:P39 ?position ; pq:P768 ?seat ; pq:P580 ?start ; pq:P582 ?end .
  bind(year(?start) as ?startyear) . bind(year(?end) as ?endyear) . filter (?startyear < 2005) .
  filter not exists { ?positionStatement pq:P4100 ?known_party . }
  # there is no party known during this specific time frame
  ?mp p:P102 ?partyStatement1 . ?partyStatement1 ps:P102 ?presumed_single_party . 
             filter not exists { ?mp p:P102 ?partyStatement2. FILTER(?partyStatement1 != ?partyStatement2) } .
             filter not exists { ?partyStatement1 pq:P580 ?startTime. } .
             filter not exists { ?partyStatement1 pq:P582 ?endTime. } . 
  # presumed_single_party is calculated for items that have no dates, and only one value present
  { SELECT distinct ?mp (GROUP_CONCAT(distinct ?hh; separator="; ") as ?historic_hansard) WHERE {
             ?position wdt:P279 wd:Q16707842 . ?mp p:P39 ?positionStatement .
             ?positionStatement ps:P39 ?position .
             optional { ?mp wdt:P2015 ?hh . }  } group by ?mp }
  # find Historic Hansard IDs
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }      
}

Query found at

graph TD classDef projected fill:lightgreen; classDef literal fill:orange; classDef iri fill:yellow; v12("?end"):::projected v2("?endTime") v13("?endyear") v15("?hh") v16("?historic_hansard"):::projected v7("?known_party") v5("?mp"):::projected v1("?partyStatement1") v4("?partyStatement2") v9("?position") v6("?positionStatement") v14("?presumed_single_party") v10("?seat") v11("?start"):::projected v3("?startTime") v13("?startyear") c7(["wd:Q16707842"]):::iri c16(["en"]):::literal c14(["bd:serviceParam"]):::iri f0[["not "]] subgraph f0e0["Exists Clause"] e0v1 --"p:qualifier/P582"--> e0v2 e0v2("?endTime"):::projected e0v1("?partyStatement1"):::projected end f0--EXISTS--> f0e0 f0 --> v1 f0 --> c1 f0 --> v2 v1 --"p:qualifier/P582"--> v2 f1[["not "]] subgraph f1e1["Exists Clause"] e1v1 --"p:qualifier/P580"--> e1v2 e1v1("?partyStatement1"):::projected e1v2("?startTime"):::projected end f1--EXISTS--> f1e1 f1 --> v1 f1 --> c2 f1 --> v3 v1 --"p:qualifier/P580"--> v3 f2[["not "]] subgraph f2e2["Exists Clause"] e2f0[["?partyStatement1 != ?partyStatement2"]] e2f0 --> e2v1 e2f0 --> e2v2 e2v3 --"p:P102"--> e2v2 e2v3("?mp"):::projected e2v1("?partyStatement1"):::projected e2v2("?partyStatement2"):::projected end f2--EXISTS--> f2e2 f2 --> v1 f2 --> v4 f2 --> v5 f2 --> c3 f3[["?partyStatement1 != ?partyStatement2"]] f3 --> v1 f3 --> v4 v5 --"p:P102"--> v4 f4[["not "]] subgraph f4e3["Exists Clause"] e3v1 --"p:qualifier/P4100"--> e3v2 e3v2("?known_party"):::projected e3v1("?positionStatement"):::projected end f4--EXISTS--> f4e3 f4 --> v6 f4 --> c4 f4 --> v7 v6 --"p:qualifier/P4100"--> v7 f5[["?startyear < '2005^^xsd:integer'"]] f5 --> v13 v9 --"p:direct/P279"--> c7 v5 --"p:P39"--> v6 v6 --"p:statement/P39"--> v9 v6 --"p:qualifier/P768"--> v10 v6 --"p:qualifier/P580"--> v11 v6 --"p:qualifier/P582"--> v12 bind6[/"year-from-dateTime(?start)"/] v11 --o bind6 bind6 --as--o v13 bind7[/"year-from-dateTime(?end)"/] v12 --o bind7 bind7 --as--o v13 v5 --"p:P102"--> v1 v1 --"p:statement/P102"--> v14 v9 --"p:direct/P279"--> c7 v5 --"p:P39"--> v6 v6 --"p:statement/P39"--> v9 subgraph optional0["(optional)"] style optional0 fill:#bbf,stroke-dasharray: 5 5; v5 -."p:direct/P2015".-> v15 end bind9[/"?hh"/] v15 --o bind9 bind9 --as--o v16 subgraph s1["http://wikiba.se/ontology#label"] style s1 stroke-width:4px; c14 --"wikibase:language"--> c16 end