<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- $This file is distributed under the terms of the license in LICENSE$ -->

<!-- See guidelines at https://wiki.duraspace.org/x/eYXVAw -->

<!-- Note: ?workshop is a generic name for any intervening event between a presentation and -->
<!-- a conference, such as a workshop or session or exhibit.  tlw72 -->

<list-view-config>
    <query-select>

        PREFIX bibo:  &lt;http://purl.org/ontology/bibo/&gt;
        PREFIX vivo:  &lt;http://vivoweb.org/ontology/core#&gt;
        PREFIX owl:   &lt;http://www.w3.org/2002/07/owl#&gt;
        PREFIX rdfs:  &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
        PREFIX vitro: &lt;http://vitro.mannlib.cornell.edu/ns/vitro/0.7#&gt;

        SELECT DISTINCT <collated>?subclass</collated>
                        ?role ?roleLabel
                        ?presentation ?presentationName ?presentationLabel
                        ?conference ?conferenceLabel
                        ?series ?seriesLabel
                        ?workshop
                        ?dateTime

        WHERE {
            ?subject ?property ?role .
            ?role a vivo:PresenterRole .

            OPTIONAL {
                <precise-subquery>?subject ?property ?role .
                ?role a vivo:PresenterRole .</precise-subquery>
                ?role rdfs:label ?roleLabel .
            }
            OPTIONAL {
                <precise-subquery>?subject ?property ?role .
                ?role a vivo:PresenterRole .</precise-subquery>
                ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
                ?presentation a vivo:Presentation .
                ?presentation rdfs:label ?presentationLabel .
                LET (?presentationName := REPLACE(STR(?presentation),"^.*(#)(.*)$", "$2"))
            }
            OPTIONAL {
                <precise-subquery>?subject ?property ?role .
                ?role a vivo:PresenterRole .</precise-subquery>
                ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
                ?presentation a vivo:Presentation .
                ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?conference .
                ?conference &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
                ?conference a bibo:Conference .
                ?conference rdfs:label ?conferenceLabel .
            }
            OPTIONAL {
                <precise-subquery>?subject ?property ?role .
                ?role a vivo:PresenterRole .</precise-subquery>
                ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
                ?presentation a vivo:Presentation .
                ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?workshop .
                ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
                ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?conference .
                ?conference &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?workshop .
                ?conference rdfs:label ?conferenceLabel .
            }
            OPTIONAL {
                <precise-subquery>?subject ?property ?role .
                ?role a vivo:PresenterRole .</precise-subquery>
                ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
                ?presentation a vivo:Presentation .
                ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?series .
                ?series &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
                ?series rdfs:label ?seriesLabel .
            }
            OPTIONAL {
                <precise-subquery>?subject ?property ?role .
                ?role a vivo:PresenterRole .</precise-subquery>
                ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
                ?presentation a vivo:Presentation .
                ?presentation &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?workshop .
                ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?presentation .
                ?workshop &lt;http://purl.obolibrary.org/obo/BFO_0000050&gt; ?series .
                ?series &lt;http://purl.obolibrary.org/obo/BFO_0000051&gt; ?workshop .
                ?series rdfs:label ?seriesLabel .
            }
            <collated>
            OPTIONAL {
                <precise-subquery>?subject ?property ?role .
                ?role a vivo:PresenterRole .</precise-subquery>
                ?role &lt;http://purl.obolibrary.org/obo/BFO_0000054&gt; ?presentation .
                ?presentation a vivo:Presentation .
                ?presentation vitro:mostSpecificType ?subclass .
            }
            </collated>

            OPTIONAL {
                <precise-subquery>?subject ?property ?role .
                ?role a vivo:PresenterRole .</precise-subquery>
                ?role vivo:dateTimeInterval ?dateTimeInterval .
                ?dateTimeInterval vivo:start ?dateTimeStartValue .
                ?dateTimeStartValue vivo:dateTime ?dateTime .
            }

            <critical-data-required>
            FILTER ( bound(?presentation) )
            </critical-data-required>

        } ORDER BY <collated>?subclass</collated> DESC(?dateTime) ?presentationLabel ?presentationName
    </query-select>

    <template>propStatement-hasPresenterRole.ftl</template>
</list-view-config>
