Запрос расписания учителя недельное для ЭЖ
http://a.roz37.ru:9984/garpix/semantik/app/request/execute?rp=http://a.roz37.ru/lipers/запросы/расписание-учителей&номерЛичногоДела=А-2021&деньНедели=1
PREFIX признак: <http://lipers.ru/схема/признаки/>
SELECT DISTINCT ?деньНедели ?урокНомер ?названиеПредмета ?названиеКласса
WHERE
{
GRAPH ?g {
<http://lipers.ru/схема/сущности/учителя/#{{номерЛичногоДела}}> признак:имеетУчебноеЗанятие ?учебноеЗанятие.
?учебноеЗанятие признак:урокНомер ?урокНомер;
признак:деньНеделиНомер ?деньНедели;
признак:названиеПредмета ?названиеПредмета;
признак:названиеКласса ?названиеКласса;
}
}
ORDER BY ?деньНедели ?урокНомер
let $data := .
let $дниНедели := ('понедельник','вторник','среда','четверг','пятница')
let $дниНедели := ('понедельник','вторник','среда','четверг','пятница')
let $уроков := 9
let $строки :=
for $i in $data
let $деньНедели := $i/деньНедели/value/text()
group by $деньНедели
let $нагрузкаДень := count(distinct-values($i/урокНомер/value/text()))
where $нагрузкаДень
return
<tr>
<td>{$дниНедели[xs:integer($деньНедели)]}</td>
{
for $l in 1 to $уроков
let $названиеПредмета := $i[урокНомер/value/text() = xs:string($l)][1]/названиеПредмета/value/text()
let $классы :=
$i[урокНомер/value/text() = xs:string($l)]/названиеКласса/value/text()
return
<td>{
if($названиеПредмета)
then($названиеПредмета || ': ' || string-join($классы, ', '))
}</td>
}
<td>{$нагрузкаДень}</td>
</tr>
let $нагрузкаНеделя :=
count(distinct-values($data[деньНедели/value/text()]/string-join((деньНедели/value/text(), урокНомер/value/text( )))))
let $таблица :=
<table align="center" class="table table-striped">
<tr>
<th>День недели</th>
{for $l in 1 to $уроков return <th>{xs:string($l) || ' урок'}</th>}
<th>Всего часов:</th>
</tr>
{$строки}
<tr>
<td><b>Итого часов:</b></td>
{for $i in 1 to $уроков return <td/>}
<td>{$нагрузкаНеделя}</td>
</tr>
</table>
return
$таблица
<result/>