@base <http://premon.fbk.eu/ontology/pb> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <all#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix nif: <http://persistence.uni-leipzig.org/nlp2rdf/ontologies/nif-core#> .
@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#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix void: <http://rdfs.org/ns/void#> .
@prefix pmo: <core#> .
@prefix pmopb: <#> .
@prefix pmonb: <nb#> .
@prefix pmovn: <vn#> .
@prefix pmofn: <fn#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ontolex: <http://www.w3.org/ns/lemon/ontolex#> .
@prefix lime: <http://www.w3.org/ns/lemon/lime#> .
@prefix synsem: <http://www.w3.org/ns/lemon/synsem#> .
@prefix decomp: <http://www.w3.org/ns/lemon/decomp#> .
@prefix vartrans: <http://www.w3.org/ns/lemon/vartrans#> .

<>
    dcterms:creator "Francesco Corcoglioniti", "Marco Rospocher <https://dkm.fbk.eu/rospocher>" ;
    dcterms:description <../images/pb.svg>, """We define classes [pmopb:Roleset](http://premon.fbk.eu/ontology/pb#Roleset) and [pmopb:SemanticRole](http://premon.fbk.eu/ontology/pb#SemanticRole) as subclasses of [pmo:SemanticClass](http://premon.fbk.eu/ontology/core#SemanticClass) and [pmo:SemanticRole](http://premon.fbk.eu/ontology/core#SemanticRole), respectively.

Each [pmopb:SemanticRole](http://premon.fbk.eu/ontology/pb#SemanticRole) instance is related (via property [pmopb:argument](http://premon.fbk.eu/ontology/pb#argument)) to exactly one [pmopb:Argument](http://premon.fbk.eu/ontology/pb#Argument), which is defined as the disjoint union of three subclasses: 

* [pmopb:NumberedArgument](http://premon.fbk.eu/ontology/pb#NumberedArgument), containing the individuals corresponding to numbered arguments (e.g., *Arg0*, *Arg1*); 
* [pmopb:Modifier](http://premon.fbk.eu/ontology/pb#Modifier), containing the
individuals corresponding to modifiers (e.g., *ArgM-LOC*, *ArgM-TMP*). While PB annotation guidelines define a single modifier (*ArgM*) with multiple function tags (e.g., *LOC*, *TMP*), we opt to specialize the modifier for each function tag, similarly to the way these arguments are actually annotated by state-of-the-art SRL tools; and, 
* [pmopb:SecondaryAgent](http://premon.fbk.eu/ontology/pb#SecondaryAgent), containing the single individual annotating secondary agents (*ArgA*). 

Property [pmopb:tag](http://premon.fbk.eu/ontology/pb#tag) enables associating possible tags, either a [pmopb:Modifier](http://premon.fbk.eu/ontology/pb#Modifier) or some additional tag defined in class [pmopb:Tag](http://premon.fbk.eu/ontology/pb#Tag), to [pmopb:SemanticRole](http://premon.fbk.eu/ontology/pb#SemanticRole)s, or [nif:Annotation](http://persistence.uni-leipzig.org/nlp2rdf/ontologies/nif-core#Annotation)s of semantic roles in examples.

Additional classes (and related properties) are defined to represent inflectional information about examples: [pmopb:Inflection](http://premon.fbk.eu/ontology/pb#Inflection), [pmopb:Person](http://premon.fbk.eu/ontology/pb#Person), [pmopb:Tense](http://premon.fbk.eu/ontology/pb#Tense), [pmopb:Aspect](http://premon.fbk.eu/ontology/pb#Aspect), [pmopb:Voice](http://premon.fbk.eu/ontology/pb#Voice), and [pmopb:Form](http://premon.fbk.eu/ontology/pb#Form)."""@en ;
    dcterms:issued "2015-10-28"^^xsd:date ;
    dcterms:license <http://creativecommons.org/licenses/by-sa/4.0/> ;
    dcterms:modified "2018-02-15"^^xsd:date ;
    dcterms:publisher "DKM, Fondazione Bruno Kessler <http://dkm.fbk.eu/>" ;
    dcterms:rights "This ontology is licensed under CC-BY-SA <http://creativecommons.org/licenses/by-sa/4.0/>"@en ;
    dcterms:title "Predicate Model for Ontologies (PreMOn) - PropBank ontology module"@en ;
    vann:preferredNamespacePrefix "pmopb" ;
    vann:preferredNamespaceUri "http://premon.fbk.eu/ontology/pb#" ;
    a owl:Ontology ;
    rdfs:comment "The PropBank module of the PreMOn ontology extends the core module for representing concepts specific to PropBank. The modelling is based on the [PropBank guidelines] (http://clear.colorado.edu/compsem/documents/propbank_guidelines.pdf)."@en ;
    rdfs:isDefinedBy <pb.ttl> ;
    owl:imports <core>, <http://www.w3.org/ns/lemon/ontolex> ;
    owl:versionInfo "2018a" .

pmopb:Argument
    a owl:Class ;
    rdfs:label "Argument (PB)"@en ;
    rdfs:subClassOf skos:Concept ;
    owl:equivalentClass [
        a owl:Class ;
        owl:unionOf (pmopb:Modifier
            pmopb:NumberedArgument
            pmopb:SecondaryAgent
        )
    ] .

pmopb:Aspect
    a owl:Class ;
    rdfs:label "Aspect"@en ;
    rdfs:subClassOf [
        a owl:Class ;
        owl:oneOf (pmopb:perfect
            pmopb:progressive
        )
    ] .

pmopb:Form
    a owl:Class ;
    rdfs:label "Form"@en ;
    rdfs:subClassOf [
        a owl:Class ;
        owl:oneOf (pmopb:gerund
            pmopb:full
            pmopb:participle
            pmopb:infinitive
        )
    ] .

pmopb:Inflection
    a owl:Class ;
    rdfs:label "Inflection"@en .

pmopb:Modifier
    a owl:Class ;
    rdfs:label "Modifier (PB)"@en ;
    rdfs:subClassOf pmopb:Argument, [
        a owl:Class ;
        owl:oneOf (pmopb:argm-lvb
            pmopb:argm-cau
            pmopb:argm-tmp
            pmopb:argm-rcl
            pmopb:argm-loc
            pmopb:argm-gol
            pmopb:argm-mod
            pmopb:argm-prd
            pmopb:argm-com
            pmopb:argm-dsp
            pmopb:argm-ext
            pmopb:argm-adj
            pmopb:argm-pnc
            pmopb:argm-slc
            pmopb:argm-neg
            pmopb:argm-rec
            pmopb:argm-dis
            pmopb:argm-prp
            pmopb:argm-dir
            pmopb:argm-adv
            pmopb:argm-mnr
            pmopb:argm-prn
            pmopb:argm-cxn
            pmopb:argm-vsp
        )
    ] ;
    owl:disjointWith pmopb:NumberedArgument, pmopb:SecondaryAgent .

pmopb:NumberedArgument
    a owl:Class ;
    rdfs:label "Numbered Argument (PB)"@en ;
    rdfs:subClassOf pmopb:Argument, [
        a owl:Class ;
        owl:oneOf (pmopb:arg4
            pmopb:arg3
            pmopb:arg2
            pmopb:arg1
            pmopb:arg0
            pmopb:arg5
            pmopb:arg6
        )
    ] ;
    owl:disjointWith pmopb:SecondaryAgent .

pmopb:Person
    a owl:Class ;
    rdfs:label "Person"@en ;
    rdfs:subClassOf [
        a owl:Class ;
        owl:oneOf (pmopb:other
            pmopb:third
        )
    ] .

pmopb:Roleset
    a owl:Class ;
    rdfs:label "Roleset (PB)"@en ;
    rdfs:subClassOf pmo:SemanticClass, [
        a owl:Restriction ;
        owl:allValuesFrom pmopb:SemanticRole ;
        owl:onProperty pmo:semRole
    ] .

pmopb:SecondaryAgent
    a owl:Class ;
    rdfs:label "Secondary Agent"@en ;
    rdfs:subClassOf pmopb:Argument .

pmopb:SemanticRole
    a owl:Class ;
    rdfs:label "Semantic Role (PB)"@en ;
    rdfs:subClassOf pmo:SemanticRole, [
        a owl:Restriction ;
        owl:onProperty pmopb:argument ;
        owl:someValuesFrom pmopb:Argument
    ], [
        a owl:Restriction ;
        owl:allValuesFrom pmopb:Roleset ;
        owl:onProperty [
            owl:inverseOf pmo:semRole
        ]
    ] .

pmopb:Tag
    a owl:Class ;
    rdfs:label "Tag"@en .

pmopb:Tense
    a owl:Class ;
    rdfs:label "Tense"@en ;
    rdfs:subClassOf [
        a owl:Class ;
        owl:oneOf (pmopb:future
            pmopb:past
            pmopb:present
        )
    ] .

pmopb:Voice
    a owl:Class ;
    rdfs:label "Voice"@en ;
    rdfs:subClassOf [
        a owl:Class ;
        owl:oneOf (pmopb:passive
            pmopb:active
        )
    ] .

pmopb:active
    a pmopb:Voice, owl:NamedIndividual .

pmopb:arg0
    a pmopb:NumberedArgument, owl:NamedIndividual .

pmopb:arg1
    a pmopb:NumberedArgument, owl:NamedIndividual .

pmopb:arg2
    a pmopb:NumberedArgument, owl:NamedIndividual .

pmopb:arg3
    a pmopb:NumberedArgument, owl:NamedIndividual .

pmopb:arg4
    a pmopb:NumberedArgument, owl:NamedIndividual .

pmopb:arg5
    a pmopb:NumberedArgument, owl:NamedIndividual .

pmopb:arg6
    a pmopb:NumberedArgument, owl:NamedIndividual .

pmopb:arga
    a pmopb:SecondaryAgent, owl:NamedIndividual .

pmopb:argm-adj
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-adv
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-cau
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-com
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-cxn
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-dir
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-dis
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-dsp
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-ext
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-gol
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-loc
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-lvb
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-mnr
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-mod
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-neg
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-pnc
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-prd
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-prn
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-prp
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-rcl
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-rec
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-slc
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-tmp
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argm-vsp
    a pmopb:Modifier, owl:NamedIndividual .

pmopb:argument
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain pmopb:SemanticRole ;
    rdfs:label "argument"@en ;
    rdfs:range pmopb:Argument .

pmopb:aspect
    a owl:ObjectProperty ;
    rdfs:domain pmopb:Inflection ;
    rdfs:label "aspect"@en ;
    rdfs:range pmopb:Aspect .

pmopb:core
    a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:comment "Set to true if the semantic role explicitly occurs in a frame file"@en ;
    rdfs:domain pmo:SemanticRole ;
    rdfs:label "core"@en ;
    rdfs:range xsd:boolean .

pmopb:form
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain pmopb:Inflection ;
    rdfs:label "form"@en ;
    rdfs:range pmopb:Form .

pmopb:full
    a pmopb:Form, owl:NamedIndividual .

pmopb:future
    a pmopb:Tense, owl:NamedIndividual .

pmopb:gerund
    a pmopb:Form, owl:NamedIndividual .

pmopb:infinitive
    a pmopb:Form, owl:NamedIndividual .

pmopb:inflection
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain pmo:Example ;
    rdfs:label "inflection"@en ;
    rdfs:range pmopb:Inflection .

pmopb:other
    a pmopb:Person, owl:NamedIndividual .

pmopb:participle
    a pmopb:Form, owl:NamedIndividual .

pmopb:passive
    a pmopb:Voice, owl:NamedIndividual .

pmopb:past
    a pmopb:Tense, owl:NamedIndividual .

pmopb:perfect
    a pmopb:Aspect, owl:NamedIndividual .

pmopb:person
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain pmopb:Inflection ;
    rdfs:label "person"@en ;
    rdfs:range pmopb:Person .

pmopb:present
    a pmopb:Tense, owl:NamedIndividual .

pmopb:progressive
    a pmopb:Aspect, owl:NamedIndividual .

pmopb:tag
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:label "tag"@en ;
    rdfs:range [
        a owl:Class ;
        owl:unionOf (pmopb:Modifier
            pmopb:Tag
            ontolex:LexicalEntry
        )
    ] .

pmopb:tag-pag
    a pmopb:Tag, owl:NamedIndividual .

pmopb:tag-ppt
    a pmopb:Tag, owl:NamedIndividual .

pmopb:tag-vsp
    a pmopb:Tag, owl:NamedIndividual .

pmopb:tense
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain pmopb:Inflection ;
    rdfs:label "tense"@en ;
    rdfs:range pmopb:Tense .

pmopb:third
    a pmopb:Person, owl:NamedIndividual .

pmopb:voice
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain pmopb:Inflection ;
    rdfs:label "voice"@en ;
    rdfs:range pmopb:Voice .

