SPARQL 中的 lang 函数是什么?

What is the lang function in SPARQL?

其中SPARQL Query Examples, there is a query for US presidents and spouses

PREFIX wd: <http://www.wikidata.org/entity/> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX v: <http://www.wikidata.org/prop/statement/>

SELECT ?p ?w ?l ?wl WHERE {
  wd:Q30 p:P6/v:P6 ?p .
  ?p wdt:P26 ?w .
  OPTIONAL  {  
    ?p rdfs:label ?l filter (lang(?l) = "en") . 
  }
  OPTIONAL {
    ?w rdfs:label ?wl filter (lang(?wl) = "en"). 
  }
}

它包含类似函数的语法,lang(?l),旨在按语言过滤。

这是如何运作的?这是Blazegraph的特殊功能吗?还是不同的语言在 RDF 图中存储为正常值?

如何以这种方式存储数据,以便使用 lang 函数正确检索?

我可以拥有自己的函数来拥有 ND 谓词,例如 probability(?a) > 0.8 吗?

lang 是原生 SPARQL 运算符(参见 the standard) which returns the language tag of an RDF literal(例如 ?p foaf:name "Robert"@EN. 中的 EN)。

一些 SPARQL 引擎支持实现自定义函数的能力。例如参见 [​​=14=].