Запрос Единый учебный план
http://a.roz37.ru:9984/garpix/semantik/app/app/api/v0.1/request/execute?rp=http://a.roz37.ru/lipers/запросы/единый-учебный-план&план=EUP-2022-2023.xlsx
# формирует записи учебного плана
# параметр {{план}} содержит полный путь к файлу в хранилище УП/НОО/NOO-UP-2019.xlsx
PREFIX s: <http://lipers.ru/схема/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT *
WHERE {
GRAPH <http://lipers.ru/lipers-simplex/{{план}}>{
?предмет ?признак ?значение;
s:предметныеОбластиФГОС ?предметнаяОбласть;
s:названиеПредмета ?названиеПредмета;
s:порядковыйНомер ?порядковыйНомер;
s:раздел ?раздел
}
FILTER (?раздел)
}
ORDER BY ?порядковыйНомер
let $data := .[признак/substring-after(value, '-')]
let $предметы := distinct-values($data/названиеПредмета/value/text())
let $разделы := sort(distinct-values($data/раздел/value/text()))
let $строки :=
for $раздел in $разделы
for $предмет in $предметы
where
$data
[раздел/value/text() = $раздел]
[названиеПредмета/value/text() = $предмет]
/значение/value/text()
let $порядковыйНомер :=
$data
[раздел/value/text() = $раздел]
[названиеПредмета/value/text() = $предмет][1]
/порядковыйНомер/value/text()
order by xs:integer($порядковыйНомер)
return
<tr>
<td>{$порядковыйНомер}</td>
<td>{$раздел}</td>
<td>{
$data
[раздел/value/text() = $раздел]
[названиеПредмета/value/text() = $предмет][1]
/предметнаяОбласть/value/text()
}</td>
<td>{$предмет}</td>
{
for $год in 1 to 11
let $часы :=
$data
[раздел/value/text() = $раздел]
[названиеПредмета/value/text() = $предмет]
[признак/substring-after(value, '-') = xs:string($год)]
/значение/value/text()
return
<td>{$часы}</td>
}
<td>{
sum(
$data
[раздел/value/text() = $раздел]
[названиеПредмета/value/text() = $предмет]
/значение/value/text()
)
}</td>
</tr>
return
<table>
<tr>
<th>Номер пп</th>
<th>Раздел</th>
<th>Предметная область</th>
<th>Предмет</th>
{for $i in 1 to 11 return <th>{$i}</th>}
<th>Итого</th>
</tr>
{$строки}
<tr>
<th>Всего</th>
<th></th>
<th></th>
<th></th>
{
for $год in 1 to 11
let $часы :=
$data
[признак/substring-after(value, '-') = xs:string($год)]
/значение/value/text()
return
<th>{sum($часы)}</th>
}
<th>{sum($data/значение/value/text())}</th>
</tr>
</table>
<div>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"/>
</div>