Expressions
String Functions
Manipulate and analyze text with SPARQL string functions. Concatenate, search, extract, and transform strings.
String Functions Overview
| Function | Description | Example |
|---|---|---|
STRLEN(?s) |
Length of string | STRLEN("hello") = 5 |
CONCAT(?a, ?b) |
Concatenate strings | CONCAT("a", "b") = "ab" |
SUBSTR(?s, start, len) |
Extract substring | SUBSTR("hello", 1, 2) = "he" |
UCASE(?s) |
Uppercase | UCASE("hello") = "HELLO" |
LCASE(?s) |
Lowercase | LCASE("HELLO") = "hello" |
CONTAINS(?s, ?sub) |
Check if contains | CONTAINS("hello", "ell") = true |
STRSTARTS(?s, ?pre) |
Check prefix | STRSTARTS("hello", "he") = true |
STRENDS(?s, ?suf) |
Check suffix | STRENDS("hello", "lo") = true |
REPLACE(?s, pat, rep) |
Replace pattern | REPLACE("hello", "l", "L") |
STR(?x) |
Convert to string | STR(123) = "123" |
String Concatenation
Build Full Names from Labels
SELECT ?person ?personLabel
(CONCAT(?givenLabel, " ", ?familyLabel) AS ?fullName)
WHERE {
?person wdt:P31 wd:Q5 ; # human
wdt:P106 wd:Q82594 ; # computer scientist
wdt:P735 ?given ; # given name
wdt:P734 ?family . # family name
?given rdfs:label ?givenLabel .
?family rdfs:label ?familyLabel .
FILTER(LANG(?givenLabel) = "en")
FILTER(LANG(?familyLabel) = "en")
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
LIMIT 20
Build Wikipedia URLs
SELECT ?lang ?langLabel
(CONCAT("https://en.wikipedia.org/wiki/",
ENCODE_FOR_URI(?langLabel)) AS ?wikiUrl)
WHERE {
?lang wdt:P31 wd:Q9143 . # programming language
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
LIMIT 20
String Search
Find Languages Containing "script"
SELECT ?lang ?langLabel
WHERE {
?lang wdt:P31 wd:Q9143 ;
rdfs:label ?langLabel .
FILTER(LANG(?langLabel) = "en")
FILTER(CONTAINS(LCASE(?langLabel), "script"))
}
ORDER BY ?langLabel
Museums Starting with "National"
SELECT ?museum ?museumLabel ?countryLabel
WHERE {
?museum wdt:P31/wdt:P279* wd:Q33506 ; # museum
wdt:P17 ?country ;
rdfs:label ?label .
FILTER(LANG(?label) = "en")
FILTER(STRSTARTS(?label, "National"))
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
LIMIT 30
Cities Ending with "burg"
SELECT ?city ?cityLabel ?countryLabel
WHERE {
?city wdt:P31/wdt:P279* wd:Q515 ; # city
wdt:P17 ?country ;
rdfs:label ?label .
FILTER(LANG(?label) = "en")
FILTER(STRENDS(?label, "burg"))
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
LIMIT 30
String Extraction
Extract First Letter of Names
SELECT ?lang ?langLabel
(SUBSTR(?langLabel, 1, 1) AS ?firstLetter)
(STRLEN(?langLabel) AS ?nameLength)
WHERE {
?lang wdt:P31 wd:Q9143 . # programming language
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
ORDER BY ?firstLetter ?langLabel
LIMIT 50
String Replacement
Normalize Labels (Remove Parenthetical)
SELECT ?item ?originalLabel
(REPLACE(?originalLabel, " \\\\(.*\\\\)", "") AS ?cleanLabel)
WHERE {
?item wdt:P31 wd:Q9143 ;
rdfs:label ?originalLabel .
FILTER(LANG(?originalLabel) = "en")
FILTER(CONTAINS(?originalLabel, "("))
}
LIMIT 20
Case Conversion
Normalize Case for Comparison
SELECT ?lang ?langLabel
(UCASE(?langLabel) AS ?upper)
(LCASE(?langLabel) AS ?lower)
WHERE {
?lang wdt:P31 wd:Q9143 .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
LIMIT 20