Я не понимаю, зачем вам здесь OPTIONAL
.Запрос Яна терпит неудачу, потому что нет никакой общей переменной между внешним шаблоном и необязательным, поэтому вы пытаетесь вычислить перекрестное произведение каждой метки для test:thing
с каждой не / французской меткой test:thing
, которая может быть огромной, и почему запроспроцессор не работает.
Вы просто хотите что-то вроде следующего, если я не понял ваш вопрос
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label
WHERE
{
test:thing rdfs:label ?label
FILTER(LANG(?label) = "" || LANGMATCHES(LANG(?label), "fr"))
}
Если вы хотите, чтобы две метки были по отдельности, вы могли бы сделать что-то вроде:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label ?preferredLabel
WHERE
{
{
test:thing rdfs:label ?label . FILTER(LANG(?label) = "")
}
UNION
{
test:thing rdfs:label ?preferredLabel . FILTER(LANGMATCHES(LANG(?label), "fr"))
}
}