Как установить язык переменной в SPARQL?

Я знаю, как установить язык литерала:"foo"@en

Но что насчет?foo@en(что не работает)?

Контекст: я хочу скопировать несколько ярлыков, установленных дляen-gbв простоenпоэтому они лучше справляются с инструментом управления знаниями, который я использую. Итак, что-то вроде этого:

      INSERT {
   ?subject skos:prefLabel ?object@en
} 

WHERE {
  ?subject skos:prefLabel ?object .
  FILTER (lang(?object) = "en-gb")
} 

1 ответ

strпозволяет получить лексическую форму литерала с языковой меткой, иSTRLANGпозволяет указать языковой тег литерала.

      CONSTRUCT { 
  ?subject skos:prefLabel ?label_en .
}

WHERE { 

  ?subject skos:prefLabel ?label_enGB . 
  FILTER (lang(?label_enGB) = "en-gb") .

  BIND( STRLANG(str(?label_enGB), "en") AS ?label_en ) .

}

Пример:

  1. ?label_enGB:"foo"@en-gb
  2. str(?label_enGB):"foo"
  3. STRLANG(str(?label_enGB), "en"):"foo"@en
Другие вопросы по тегам