Расписание классов

Запрос для списка учебника по классу

Свойства запроса

  • Пример вызова:

    http://a.roz37.ru:9984/garpix/semantik/app/request/execute?rp=http://a.roz37.ru/lipers/запросы/расписание-классов&класс=10
  • Данные

    # расписание: расписание класса на неделю
    
    PREFIX признак: <http://lipers.ru/схема/признаки/>
    PREFIX онтология: <http://lipers.ru/схема/онтология/>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    
    SELECT  ?деньНедели ?урокНомер ?предмет ?кодПредмета ?подгруппа ?имяУчителя
    
    WHERE {
        GRAPH ?g {
                ?занятие 
                    rdf:type онтология:УчебноеЗанятие;
                    признак:названиеКласса "{{класс}}";
                    признак:урокНомер ?урокНомер;
                    признак:деньНеделиНомер ?деньНедели;
                    признак:названиеПредмета ?кодПредмета.
            OPTIONAL {?занятие признак:названиеПодгруппы ?подгруппа}
                ?учитель признак:имеетУчебноеЗанятие ?занятие;
                        признак:локальноеИмя ?имяУчителя.
            OPTIONAL{
                GRAPH ?v {
                    ?идентификаторПредмета
                        признак:кодПредмета ?кодПредмета;
                        признак:названиеПредмета ?предмет
                }
            }
        }
    }
    ORDER BY ?деньНедели ?урокНомер   
  • Рендеринг

    declare namespace ns="http://www.w3.org/2005/sparql-results#";
    declare variable $results external;
    
    let $data := $results
    let $строки :=
        for $номерУрока in (1 to 8)
        return
            <tr>
            <td>{$номерУрока}</td>
            {
                for $день in (1 to 5)
                let $уроки := 
                    $data
                        [ns:binding[@name="деньНедели"]//text()=xs:string($день)]
                        [ns:binding[@name="урокНомер"]//text()=xs:string($номерУрока)]      
                let $записиУроков :=
                    for $урок in $уроки
                    let $учитель :=
                        if($урок//ns:binding[@name="подгруппа"]/ns:literal/text())
                        then('(' || $урок//ns:binding[@name="имяУчителя"]/ns:literal/text() || ')')
                        else()
                    let $предмет := 
                        if($урок//ns:binding[@name="предмет"]/ns:literal/text())
                        then($урок//ns:binding[@name="предмет"]/ns:literal/text())
                        else($урок//ns:binding[@name="кодПредмета"]/ns:literal/text())
                    return
                        string-join(($предмет, $учитель), ' ')
    
                return
                    <td>{string-join($записиУроков, ' |&#10;')}</td>
            }
            </tr>
    let $таблица :=
        <table class="table table-striped">
            <tr>
            <th>Урок</th>
            <th>Понедельник</th>
            <th>Вторник</th>
            <th>Среда</th>
            <th>Четверг</th>
            <th>Пятница</th>
            </tr>
            {$строки}
        </table>
    return
        $таблица
  • Шаблон

    <div/>
  • Формат сериализации