Temporal

Timelines & Periods

Build chronological timelines and analyze time periods. Group events by decade, century, or custom intervals using SPARQL's aggregation features.

Creating Time Buckets

Grouping events into time periods (decades, centuries, eras) is essential for historical analysis. Use arithmetic with FLOOR() to create time buckets.

Time Bucket Formula
Decade FLOOR(YEAR(?date) / 10) * 10
Century FLOOR((YEAR(?date) - 1) / 100) + 1
Quarter Century FLOOR(YEAR(?date) / 25) * 25
Half Century FLOOR(YEAR(?date) / 50) * 50

Programming: Language Evolution Timeline

Programming Language Timeline (Visualization)
Run ↗
#defaultView:Timeline
SELECT ?lang ?langLabel ?inception ?image
WHERE {
  ?lang wdt:P31 wd:Q9143 ;
        wdt:P571 ?inception .
  OPTIONAL { ?lang wdt:P154 ?image . }  # logo
  FILTER(YEAR(?inception) >= 1950)
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
}
ORDER BY ?inception
Languages by Programming Paradigm Over Time
Run ↗
SELECT ?decade ?paradigmLabel (COUNT(?lang) AS ?count)
WHERE {
  ?lang wdt:P31 wd:Q9143 ;
        wdt:P571 ?inception ;
        wdt:P3966 ?paradigm .
  BIND(FLOOR(YEAR(?inception) / 10) * 10 AS ?decade)
  FILTER(?decade >= 1960)
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
}
GROUP BY ?decade ?paradigmLabel
ORDER BY ?decade DESC(?count)

Cultural Heritage: Art Movement Periods

Artists and Their Active Periods
Run ↗
#defaultView:Timeline
SELECT ?artist ?artistLabel ?birth ?death
       ?movement ?movementLabel
WHERE {
  ?artist wdt:P106 wd:Q1028181 ;  # painter
          wdt:P135 ?movement ;      # movement
          wdt:P569 ?birth .
  OPTIONAL { ?artist wdt:P570 ?death . }

  # Impressionism movement
  VALUES ?movement { wd:Q40415 }  # Impressionism

  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
}
ORDER BY ?birth
Artwork Production by Century
Run ↗
#defaultView:BarChart
SELECT (CONCAT(STR(?century), "th century") AS ?period)
       (COUNT(?artwork) AS ?count)
WHERE {
  ?artwork wdt:P31 wd:Q3305213 ;  # painting
           wdt:P571 ?date .
  BIND(FLOOR((YEAR(?date) - 1) / 100) + 1 AS ?century)
  FILTER(?century >= 15 && ?century <= 21)
}
GROUP BY ?century
ORDER BY ?century

Urban: City Growth Over Time

Cities Founded by Era
Run ↗
SELECT ?era (COUNT(?city) AS ?count)
       (GROUP_CONCAT(DISTINCT ?cityLabel; SEPARATOR=", ") AS ?examples)
WHERE {
  ?city wdt:P31/wdt:P279* wd:Q515 ;
        wdt:P571 ?founded .
  BIND(YEAR(?founded) AS ?year)
  BIND(
    IF(?year < -3000, "1. Ancient (before 3000 BC)",
    IF(?year < -500, "2. Bronze/Iron Age (-3000 to -500)",
    IF(?year < 500, "3. Classical (-500 to 500)",
    IF(?year < 1500, "4. Medieval (500-1500)",
    IF(?year < 1800, "5. Early Modern (1500-1800)",
    IF(?year < 1900, "6. Industrial (1800-1900)",
    "7. Modern (1900+)"))))))
  AS ?era)
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
}
GROUP BY ?era
ORDER BY ?era
Infrastructure Timeline: Railways
Run ↗
#defaultView:Timeline
SELECT ?railway ?railwayLabel ?opened ?country ?countryLabel
WHERE {
  ?railway wdt:P31 wd:Q728937 ;  # railway line
           wdt:P1619 ?opened ;     # date opened
           wdt:P17 ?country .
  FILTER(YEAR(?opened) >= 1800 && YEAR(?opened) <= 1900)
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
}
ORDER BY ?opened
LIMIT 200

Overlapping Time Periods

Find Contemporaries: Artists Active at Same Time
Run ↗
SELECT ?artist1Label ?artist2Label
       ?birth1 ?death1 ?birth2 ?death2
WHERE {
  # First artist: Van Gogh
  BIND(wd:Q5582 AS ?artist1)
  ?artist1 wdt:P569 ?birth1 ;
           wdt:P570 ?death1 .

  # Find other painters with overlapping lifespans
  ?artist2 wdt:P106 wd:Q1028181 ;  # painter
           wdt:P569 ?birth2 ;
           wdt:P570 ?death2 .

  # Overlapping lifetimes
  FILTER(?birth2 < ?death1 && ?death2 > ?birth1)
  FILTER(?artist1 != ?artist2)

  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
}
LIMIT 50