@prefix : <https://w3id.org/PrOM#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@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#> .
@base <https://w3id.org/PrOM#> .

<https://w3id.org/PrOM#> rdf:type owl:Ontology ;
                          owl:versionIRI <https://w3id.org/PrOM/0.2.0> ;
                          owl:imports <http://purl.obolibrary.org/obo/bfo/2020/bfo-core.ttl> ,
                                      <http://www.w3.org/ns/prov-o-20130430> ;
                          <http://purl.org/dc/terms/creator> "Frank Krüger" ,
                                                             "Hannes Rönn" ,
                                                             "Julia Matela" ,
                                                             "Sascha Genehr" ;
                          <http://purl.org/dc/terms/hasVersion> "0.2.0" ;
                          <http://purl.org/dc/terms/license> "This work is distributed under a Creative Commons Attribution License: https://creativecommons.org/licenses/by/4.0/"@en ;
                          <http://purl.org/dc/terms/title> "PrOM: Provenance Ontology for Form Metadata"@en ;
                          rdfs:comment "PrOM (Provenance Ontology for Form Metadata) is an ontology for tracking the evolution and provenance of clinical and epidemiological form metadata. It captures hierarchical form structures, changes in items and answer options, and the lineage of entire forms, enabling machine-readable documentation of metadata evolution and supporting FAIR principles."@en .

#################################################################
#    Annotation properties
#################################################################

###  http://purl.org/dc/terms/creator
<http://purl.org/dc/terms/creator> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/hasVersion
<http://purl.org/dc/terms/hasVersion> rdf:type owl:AnnotationProperty .


#################################################################
#    Object Properties
#################################################################

###  http://www.w3.org/ns/prov#wasDerivedFrom
<http://www.w3.org/ns/prov#wasDerivedFrom> rdf:type owl:ObjectProperty .


###  https://w3id.org/PrOM#formDerivedFrom
:formDerivedFrom rdf:type owl:ObjectProperty ;
                 rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                 rdf:type owl:TransitiveProperty ;
                 rdfs:domain :Form ;
                 rdfs:range :Form ;
                 rdfs:comment "Indicates that a form with a certain domain has been derived from a form used in an earlier study or evolution stage."@en ;
                 rdfs:label "formDerivedFrom"@en .


###  https://w3id.org/PrOM#hasDomainCategory
:hasDomainCategory rdf:type owl:ObjectProperty ;
                   rdfs:subPropertyOf <http://purl.obolibrary.org/obo/BFO_0000178> ;
                   rdfs:domain :Form ;
                   rdfs:range :Category ;
                   rdfs:comment "Indicates a membership of a form to a domain category." ;
                   rdfs:label "hasDomainCategory" .


###  https://w3id.org/PrOM#hasDomainSubCategory
:hasDomainSubCategory rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf :hasDomainCategory ;
                      rdfs:range :Subcategory ;
                      rdfs:comment "Indicates a membership of a form to a domain subcategory." ;
                      rdfs:label "hasDomainSubcategory" .


###  https://w3id.org/PrOM#hasForm
:hasForm rdf:type owl:ObjectProperty ;
         rdfs:subPropertyOf <http://purl.obolibrary.org/obo/BFO_0000178> ;
         rdf:type owl:AsymmetricProperty ;
         rdfs:domain :Evolution ;
         rdfs:range :Form ;
         rdfs:comment "Indicates that a study includes a specific form."@en ;
         rdfs:label "hasForm"@en .


###  https://w3id.org/PrOM#hasItem
:hasItem rdf:type owl:ObjectProperty ;
         rdfs:subPropertyOf <http://purl.obolibrary.org/obo/BFO_0000178> ;
         rdf:type owl:AsymmetricProperty ;
         rdfs:domain :Form ;
         rdfs:range :Item ;
         rdfs:comment "Indicates that a form includes a specific item."@en ;
         rdfs:label "hasItem"@en .


###  https://w3id.org/PrOM#hasOption
:hasOption rdf:type owl:ObjectProperty ;
           rdfs:subPropertyOf <http://purl.obolibrary.org/obo/BFO_0000178> ;
           rdf:type owl:AsymmetricProperty ;
           rdfs:domain :ChoiceItem ;
           rdfs:range :Option ;
           rdfs:comment "Indicates that a choice item includes a checkbox option for user selection."@en ;
           rdfs:label "hasOption"@en .


###  https://w3id.org/PrOM#itemWasGeneralizedFrom
:itemWasGeneralizedFrom rdf:type owl:ObjectProperty ;
                        rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                        rdfs:domain :Item ;
                        rdfs:range :Item ;
                        rdfs:comment "A derived item represents a more generalized version of the source item, resulting in a version that is applicable to a wider scope or a more generic context."@en ;
                        rdfs:label "itemWasGeneralizedFrom"@en .


###  https://w3id.org/PrOM#itemWasPreservedFrom
:itemWasPreservedFrom rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                      rdf:type owl:TransitiveProperty ;
                      rdfs:domain :Item ;
                      rdfs:range :Item ;
                      rdfs:comment "Indicates that the derived item is syntactically identical to the original item."@en ;
                      rdfs:label "itemWasPreservedFrom"@en .


###  https://w3id.org/PrOM#itemWasSpecifiedFrom
:itemWasSpecifiedFrom rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                      rdfs:domain :Item ;
                      rdfs:range :Item ;
                      rdfs:comment "A derived item was created by specifying, refining, or narrowing the scope, structure, or context of a source item, without deviating from its core intent."@en ;
                      rdfs:label "itemWasSpecifiedFrom"@en .


###  https://w3id.org/PrOM#itemWasTypographicallyRevisedFrom
:itemWasTypographicallyRevisedFrom rdf:type owl:ObjectProperty ;
                                   rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                                   rdfs:domain :Item ;
                                   rdfs:range :Item ;
                                   rdfs:comment "Can represent typographical revisions between items or between checkboxes, but not mixed."@en ;
                                   rdfs:label "itemWasTypographicallyRevisedFrom"@en .


###  https://w3id.org/PrOM#optionWasGeneralizedFrom
:optionWasGeneralizedFrom rdf:type owl:ObjectProperty ;
                          rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                          rdfs:domain :Option ;
                          rdfs:range :Option ;
                          rdfs:comment "A derived answer option represents a more generalized version of the source answer option."@en ;
                          rdfs:label "optionWasGeneralizedFrom"@en .


###  https://w3id.org/PrOM#optionWasPreservedFrom
:optionWasPreservedFrom rdf:type owl:ObjectProperty ;
                        rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                        rdf:type owl:TransitiveProperty ;
                        rdfs:domain :Option ;
                        rdfs:range :Option ;
                        rdfs:comment "Indicates that the derived answer option is syntactically identical to the original answer option."@en ;
                        rdfs:label "optionWasPreservedFrom"@en .


###  https://w3id.org/PrOM#optionWasSpecifiedFrom
:optionWasSpecifiedFrom rdf:type owl:ObjectProperty ;
                        rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                        rdfs:domain :Option ;
                        rdfs:range :Option ;
                        rdfs:comment "A derived answer option was created by specifying, refining, or narrowing the scope of a source answer option."@en ;
                        rdfs:label "optionWasSpecifiedFrom"@en .


###  https://w3id.org/PrOM#optionWasTypographicallyRevisedFrom
:optionWasTypographicallyRevisedFrom rdf:type owl:ObjectProperty ;
                                     rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                                     rdfs:domain :Option ;
                                     rdfs:range :Option ;
                                     rdfs:comment "Can represent typographical revisions between answer options (checkboxes)."@en ;
                                     rdfs:label "optionWasTypographicallyRevisedFrom"@en .


###  https://w3id.org/PrOM#subcategoryOf
:subcategoryOf rdf:type owl:ObjectProperty ;
               rdfs:subPropertyOf <http://purl.obolibrary.org/obo/BFO_0000176> ;
               rdfs:domain :Subcategory ;
               rdfs:range :Category ;
               rdfs:comment "Indicates the category that the subcategory belongs to." ;
               rdfs:label "subcategoryOf" .


###  https://w3id.org/PrOM#wasDatatypeChangedFrom
:wasDatatypeChangedFrom rdf:type owl:ObjectProperty ;
                        rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                        rdfs:domain :Item ;
                        rdfs:range :Item ;
                        rdfs:comment """
            Indicates that the datatype of the derived item was changed from that of the source item. 
            Use in combination with the 'hasDatatype' property to specify the original and resulting datatypes.
        """@en ;
                        rdfs:label "wasDatatypeChangedFrom"@en .


###  https://w3id.org/PrOM#wasItemTypeChangedFrom
:wasItemTypeChangedFrom rdf:type owl:ObjectProperty ;
                        rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                        rdfs:domain :Item ;
                        rdfs:range :Item ;
                        rdfs:comment "Indicates that the derived item differs in type (e.g., multiple choice to text) from the source item."@en ;
                        rdfs:label "wasItemTypeChangedFrom"@en .


###  https://w3id.org/PrOM#wasUnitAddedFrom
:wasUnitAddedFrom rdf:type owl:ObjectProperty ;
                  rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                  rdfs:domain :Item ;
                  rdfs:range :Item ;
                  rdfs:comment "Indicates that the original item has a measurement unit but it is not included in the derived item."@en ;
                  rdfs:label "wasUnitAddedFrom"@en .


###  https://w3id.org/PrOM#wasUnitChangedFrom
:wasUnitChangedFrom rdf:type owl:ObjectProperty ;
                    rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                    rdfs:domain :Item ;
                    rdfs:range :Item ;
                    rdfs:comment "Indicates that a derived item has changed measurement unit."@en ;
                    rdfs:label "wasUnitChangedFrom"@en .


###  https://w3id.org/PrOM#wasUnitRemovedFrom
:wasUnitRemovedFrom rdf:type owl:ObjectProperty ;
                    rdfs:subPropertyOf <http://www.w3.org/ns/prov#wasDerivedFrom> ;
                    rdfs:domain :Item ;
                    rdfs:range :Item ;
                    rdfs:comment "Indicates that the derived item does not have a measurement unit, but the original item includes one."@en ;
                    rdfs:label "wasUnitRemovedFrom"@en .


#################################################################
#    Data properties
#################################################################

###  https://w3id.org/PrOM#evolutionID
:evolutionID rdf:type owl:DatatypeProperty ;
             rdfs:subPropertyOf owl:topDataProperty ;
             rdfs:domain [ rdf:type owl:Class ;
                           owl:unionOf ( :Evolution
                                         :Form
                                         :Item
                                       )
                         ] ;
             rdfs:range xsd:string ;
             rdfs:comment "The identifier or name for a specific evolution phase or iteration of a study that encompasses multiple forms."@en ;
             rdfs:label "evolutionID"@en .


###  https://w3id.org/PrOM#formDisplayName
:formDisplayName rdf:type owl:DatatypeProperty ;
                 rdfs:subPropertyOf owl:topDataProperty ;
                 rdfs:domain :Form ;
                 rdfs:range xsd:string ;
                 rdfs:comment "The heading or name of a form."@en ;
                 rdfs:label "formDisplayName"@en .


###  https://w3id.org/PrOM#hasGlobalID
:hasGlobalID rdf:type owl:DatatypeProperty ;
             rdfs:domain [ rdf:type owl:Class ;
                           owl:unionOf ( :Form
                                         :Item
                                         :Option
                                       )
                         ] ;
             rdfs:range xsd:string ;
             rdfs:comment "A unique global identifier." ;
             rdfs:label "hasGlobalID" .


###  https://w3id.org/PrOM#itemLocalID
:itemLocalID rdf:type owl:DatatypeProperty ;
             rdfs:subPropertyOf owl:topDataProperty ;
             rdfs:domain :Item ;
             rdfs:range xsd:string ;
             rdfs:comment "A unique identifier for a item within a form."@en ;
             rdfs:label "itemLocalID"@en .


###  https://w3id.org/PrOM#itemText
:itemText rdf:type owl:DatatypeProperty ;
          rdfs:subPropertyOf owl:topDataProperty ;
          rdfs:domain :Item ;
          rdfs:range xsd:string ;
          rdfs:comment "Item in a form that is presented to respondents."@en ;
          rdfs:label "itemText"@en .


###  https://w3id.org/PrOM#optionDatatype
:optionDatatype rdf:type owl:DatatypeProperty ;
                rdfs:subPropertyOf owl:topDataProperty ;
                rdfs:domain :Item ;
                rdfs:range xsd:string ;
                rdfs:comment "Specifies the datatype for the input of a item."@en ;
                rdfs:label "optionDatatype"@en .


###  https://w3id.org/PrOM#optionLocalID
:optionLocalID rdf:type owl:DatatypeProperty ;
               rdfs:subPropertyOf owl:topDataProperty ;
               rdfs:domain :Option ;
               rdfs:range xsd:decimal ;
               rdfs:comment "Numeric value of an option-label (as it would occur in clinical data)."@en ;
               rdfs:label "optionLocalID"@en .


###  https://w3id.org/PrOM#optionText
:optionText rdf:type owl:DatatypeProperty ;
            rdfs:subPropertyOf owl:topDataProperty ;
            rdfs:domain :Option ;
            rdfs:range xsd:string ;
            rdfs:comment "Represents the text label associated with an answer option."@en ;
            rdfs:label "optionText"@en .


#################################################################
#    Classes
#################################################################

###  http://www.w3.org/ns/prov#Entity
<http://www.w3.org/ns/prov#Entity> rdf:type owl:Class .


###  https://w3id.org/PrOM#Category
:Category rdf:type owl:Class ;
          rdfs:subClassOf <http://www.w3.org/ns/prov#Entity> ;
          rdfs:comment "A class representing a category encompassing multiple medical forms related to a specific domain." ;
          rdfs:label "Domain Category" .


###  https://w3id.org/PrOM#ChoiceItem
:ChoiceItem rdf:type owl:Class ;
            rdfs:subClassOf :Item ,
                            [ rdf:type owl:Restriction ;
                              owl:onProperty :hasOption ;
                              owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                              owl:onClass :Option
                            ] ;
            owl:disjointWith :TextItem ;
            rdfs:comment " A class representing a item type that provides several predefined answer options, of which one or more can be selected by the respondent."@en ;
            rdfs:label "Choice Item"@en .


###  https://w3id.org/PrOM#Evolution
:Evolution rdf:type owl:Class ;
           rdfs:subClassOf <http://www.w3.org/ns/prov#Entity> ,
                           [ rdf:type owl:Restriction ;
                             owl:onProperty :hasForm ;
                             owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                             owl:onClass :Form
                           ] ;
           rdfs:comment "A class representing a study or survey conducted over a defined period, such as SHIP0 or SHIP1, capturing data from participants at different time points to analyze changes and trends over time."@en ;
           rdfs:label "Evolution"@en .


###  https://w3id.org/PrOM#Form
:Form rdf:type owl:Class ;
      rdfs:subClassOf <http://www.w3.org/ns/prov#Entity> ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :hasItem ;
                        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                        owl:onClass :Item
                      ] ;
      rdfs:comment "A class representing a structured set of items designed to gather information from respondents on a specific topic."@en ;
      rdfs:label "Form"@en .


###  https://w3id.org/PrOM#Item
:Item rdf:type owl:Class ;
      rdfs:subClassOf <http://www.w3.org/ns/prov#Entity> ;
      rdfs:comment "A class representing a general form field in a form, which may have various types of answer formats."@en ;
      rdfs:label "Item"@en .


###  https://w3id.org/PrOM#Option
:Option rdf:type owl:Class ;
        rdfs:subClassOf <http://www.w3.org/ns/prov#Entity> ;
        rdfs:comment """A class representing an individual answer option (choice) within a choice item in a medical form. 
        Each instance corresponds to a possible response the participant can select."""@en ;
        rdfs:label "Option"@en .


###  https://w3id.org/PrOM#Subcategory
:Subcategory rdf:type owl:Class ;
             rdfs:subClassOf :Category ,
                             [ rdf:type owl:Restriction ;
                               owl:onProperty :subcategoryOf ;
                               owl:someValuesFrom :Category
                             ] ;
             rdfs:comment "A class representing a subcategory that further delineates a category, providing a more specific focus within the broader domain." ;
             rdfs:label "Domain Subcategory" .


###  https://w3id.org/PrOM#TextItem
:TextItem rdf:type owl:Class ;
          rdfs:subClassOf :Item ;
          rdfs:comment "A class representing a type of item where the answer is provided as a text input."@en ;
          rdfs:label "Text Item"@en .


#################################################################
#    General axioms
#################################################################

[ rdf:type owl:AllDisjointClasses ;
  owl:members ( :Category
                :Evolution
                :Form
                :Item
                :Option
              )
] .


###  Generated by the OWL API (version 5.1.18) https://github.com/owlcs/owlapi/
