Multilingual

Scripts & Writing

Query across different writing systems. Work with Latin, Cyrillic, Arabic, CJK characters, and more in Wikidata.

Writing Systems in Wikidata

Wikidata stores labels in many scripts. The writing system is usually determined by the language tag, not stored separately.

Script Languages Example
Latin en, fr, de, es Paris
Cyrillic ru, uk, bg Москва
Arabic ar, fa, ur القاهرة
Han zh, ja 東京
Hangul ko 서울
Devanagari hi, sa दिल्ली
Greek el Αθήνα
Hebrew he ירושלים

Querying Multiple Scripts

City Names in Multiple Scripts
Run ↗
SELECT ?city ?en ?ru ?ar ?zh ?ja ?ko
WHERE {
  VALUES ?city {
    wd:Q84    # London
    wd:Q90    # Paris
    wd:Q649   # Moscow
    wd:Q1490  # Tokyo
  }

  OPTIONAL { ?city rdfs:label ?en . FILTER(LANG(?en) = "en") }
  OPTIONAL { ?city rdfs:label ?ru . FILTER(LANG(?ru) = "ru") }
  OPTIONAL { ?city rdfs:label ?ar . FILTER(LANG(?ar) = "ar") }
  OPTIONAL { ?city rdfs:label ?zh . FILTER(LANG(?zh) = "zh") }
  OPTIONAL { ?city rdfs:label ?ja . FILTER(LANG(?ja) = "ja") }
  OPTIONAL { ?city rdfs:label ?ko . FILTER(LANG(?ko) = "ko") }
}

Cultural Heritage in Original Scripts

Museum Names in Native Scripts
Run ↗
SELECT ?museum ?enLabel ?nativeLabel
       (LANG(?nativeLabel) AS ?script)
WHERE {
  ?museum wdt:P31/wdt:P279* wd:Q33506 ;
          wdt:P17 ?country .
  ?country wdt:P37 ?officialLang .
  ?officialLang wdt:P424 ?langCode .

  # Get English and native labels
  ?museum rdfs:label ?enLabel .
  FILTER(LANG(?enLabel) = "en")

  ?museum rdfs:label ?nativeLabel .
  FILTER(LANG(?nativeLabel) = ?langCode)

  # Non-Latin scripts
  FILTER(?langCode IN ("ru", "ja", "zh", "ar", "he", "ko", "el"))
}
LIMIT 30

Right-to-Left Scripts

Arabic and Hebrew City Names
Run ↗
SELECT ?city ?enLabel ?arLabel ?heLabel
WHERE {
  ?city wdt:P31/wdt:P279* wd:Q515 ;
        wdt:P17 wd:Q801 .  # Israel

  OPTIONAL { ?city rdfs:label ?enLabel . FILTER(LANG(?enLabel) = "en") }
  OPTIONAL { ?city rdfs:label ?arLabel . FILTER(LANG(?arLabel) = "ar") }
  OPTIONAL { ?city rdfs:label ?heLabel . FILTER(LANG(?heLabel) = "he") }
}
LIMIT 20