Я изучаю SPARQL прямо сейчас, и у меня возникают проблемы с пониманием ограничений шаблонов CONSTRUCT.Обычно все работает нормально, как я и ожидал.Однако мое понимание нарушается, когда я начинаю создавать шаблоны, которые не имеют смысла с точки зрения семантики.Вот пример:
У меня хранятся следующие данные:
me: a foaf:Person .
foaf:mbox rdfs:label "Email" .
С шаблоном по умолчанию ?s ?p ?o
я, очевидно, получаю эти точные данные обратно.Если я сделаю что-то немного бессмысленное, как это:
CONSTRUCT {
?type ?labeled ?label
}
WHERE {
me: a ?type .
?labeled rdfs:label ?label .
}
Я вернусь к этой тройке:
foaf:Person foaf:mbox "Email" .
Для меня это имеет смысл, потому что есть три переменные, и каждаяимеет только одно значение, к которому он может привязаться в наборе данных.Однако, как только я переключаю порядок переменных в шаблоне так: ?type ?label ?labeled
, я буквально ничего не получаю обратно.Это почему?Шаблон ?type ?labeled ?label
уже нарушает исходную структуру данных, и я все еще получаю что-то обратно, так почему же ?type ?label ?labeled
будет другим?