class WikidataPositionHistory::SPARQL::PositionQuery

SPARQL for fetching metadata about a position

Public Instance Methods

raw_sparql() click to toggle source
# File lib/sparql/position_query.rb, line 7
      def raw_sparql
        <<~SPARQL
          # position-metadata

          SELECT DISTINCT ?item ?inception ?inception_precision ?abolition ?abolition_precision
                          ?replaces ?replacedBy ?derivedReplaces ?derivedReplacedBy
                          ?isPosition ?isLegislator
                          ?isConstituency ?representative_count ?legislature
          WHERE {
            VALUES ?item { wd:%s }
            BIND(EXISTS { wd:%s wdt:P279+ wd:Q4164871 } as ?isPosition)
            BIND(EXISTS { wd:%s wdt:P279+ wd:Q4175034 } as ?isLegislator)
            BIND(EXISTS { wd:%s wdt:P31/wdt:P279+ wd:Q192611 } as ?isConstituency)

            OPTIONAL { ?item p:P571 [ a wikibase:BestRank ;
              psv:P571 [ wikibase:timeValue ?inception; wikibase:timePrecision ?inception_precision ]
            ] }
            OPTIONAL { ?item p:P576 [ a wikibase:BestRank ;
              psv:P576 [ wikibase:timeValue ?abolition; wikibase:timePrecision ?abolition_precision ]
            ] }
            OPTIONAL { ?item wdt:P1365 ?replaces }
            OPTIONAL { ?item wdt:P1366 ?replacedBy }
            OPTIONAL { ?derivedReplaces wdt:P1366 ?item }
            OPTIONAL { ?derivedReplacedBy wdt:P1365 ?item }

            OPTIONAL { # if constituency
              ?item p:P1410 [ a wikibase:BestRank ; ps:P1410 ?representative_count ; pq:P194 ?legislature ]
            }
          }
        SPARQL
      end
sparql_args() click to toggle source
# File lib/sparql/position_query.rb, line 39
def sparql_args
  [itemid] * 4
end