@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <https://solid.ti.rw.fau.de/public/ns/stream-containers#> .
@prefix ldp: <http://www.w3.org/ns/ldp#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://purl.org/dc/terms/created>
    a owl:AnnotationProperty .

<http://purl.org/dc/terms/creator>
    a owl:AnnotationProperty .

rdf:Property
    a owl:Class .

xsd:date
    a rdfs:Datatype .

xsd:duration
    a rdfs:Datatype .

ldp:Container
    a owl:Class .

ldp:hasMemberRelation
    a owl:ObjectProperty .

ldp:membershipResource
    a owl:ObjectProperty .

<https://solid.ti.rw.fau.de/public/ns/stream-containers>
    <http://purl.org/dc/terms/creator> <https://dschraudner.solidcommunity.net/profile/card#me>, "2021-07-23"^^xsd:dateTime ;
    a owl:Ontology ;
    rdfs:label "Stream Container Vocabulary"@en .

:LogicalWindow
    a owl:Class ;
    rdfs:subClassOf :Window ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Window
            [
                a owl:Restriction ;
                owl:onProperty :logical ;
                owl:someValuesFrom xsd:duration
            ]
        )
    ] .

:PhysicalWindow
    a owl:Class ;
    rdfs:subClassOf :Window ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Window
            [
                a owl:Restriction ;
                owl:onProperty :physical ;
                owl:someValuesFrom xsd:positiveInteger
            ]
        )
    ] .

:StreamContainer
    a owl:Class ;
    rdfs:subClassOf ldp:Container .

:Window
    a owl:Class ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf ([
                a owl:Class ;
                owl:unionOf ([
                        a owl:Restriction ;
                        owl:onProperty :logical ;
                        owl:someValuesFrom xsd:duration
                    ]
                    [
                        a owl:Restriction ;
                        owl:onProperty :physical ;
                        owl:someValuesFrom xsd:positiveInteger
                    ]
                )
            ]
            [
                a owl:Restriction ;
                owl:onProperty ldp:hasMemberRelation ;
                owl:someValuesFrom rdf:Property
            ]
            [
                a owl:Restriction ;
                owl:onProperty ldp:membershipResource ;
                owl:someValuesFrom owl:Thing
            ]
            [
                a owl:Restriction ;
                owl:onProperty :contentTimestampRelation ;
                owl:someValuesFrom rdf:Property
            ]
        )
    ] .

:contentTimestampRelation
    a owl:ObjectProperty ;
    rdfs:domain :Window ;
    rdfs:range rdf:Property .

:logical
    a owl:DatatypeProperty ;
    rdfs:domain :Window ;
    rdfs:range xsd:duration .

:physical
    a owl:DatatypeProperty ;
    rdfs:domain :Window ;
    rdfs:range xsd:positiveInteger .

:window
    a owl:ObjectProperty ;
    rdfs:domain :StreamContainer ;
    rdfs:range :Window .

