Понимание шаблонов CONSTRUCT - PullRequest
0 голосов
/ 13 сентября 2018

Я изучаю 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 будет другим?

1 Ответ

0 голосов
/ 14 сентября 2018

Как отмечает @ AKSW , литералы не могут быть предикатами."Email" является литералом, и поэтому его нельзя построить в положение предиката.

...