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)
#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
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
#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
#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
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
#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
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