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
Run ↗
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
Run ↗
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"
Run ↗
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"
Run ↗
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"
Run ↗
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
Run ↗
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)
Run ↗
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
Run ↗
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