# $This file is distributed under the terms of the license in LICENSE$

@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix display: <http://vitro.mannlib.cornell.edu/ontologies/display/1.1#> .
@prefix vitro:  <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> .

#########Classes#########
###Basic
owl:Class a owl:Class .
owl:Ontology a owl:Class .
owl:AnnotationProperty a owl:Class .
owl:DatatypeProperty a owl:Class .
owl:ObjectProperty a owl:Class .

###Display Model
display:MainMenu
      a       owl:Class ;
      vitro:customDisplayViewAnnot "individual-menu.ftl"^^xsd:string .

display:NavigationElement a owl:Class .

display:Page a owl:Class .

display:HomePage a owl:Class .

display:ClassGroupPage a owl:Class .

display:IndividualsForClassesPage a owl:Class .

display:InternalClassesPage a owl:Class .

display:DataGetter a owl:Class .

display:RequiredAction a owl:Class ;
    rdfs:comment "Represents a action that may need authorization to perform." .

<java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>
    a owl:Class ;
    rdfs:comment "Data getter for running a SPARQL query." .

<java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SearchIndividualsDataGetter>
    a owl:Class ;
    rdfs:comment "A data getter for a Class search, i.e. get individuals for VClass" .

<java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlUpdate>
    a owl:Class ;
    rdfs:comment "A data getter that runs a SPARQL Update" .

<java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.BrowseDataGetter>
    a owl:Class ;
    rdfs:comment "A data getter for a standard Vitro browse page" .

<java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.ClassGroupPageData>
    a owl:Class ;
    rdfs:comment "A data getter for a VClassGroup page" .

<java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.FixedHTMLDataGetter>
    a owl:Class ;
    rdfs:comment "A data getter for a Fixed piece of HTML stored in RDF" .

<java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.IndividualsForClassesDataGetter>
    a owl:Class .

## Class defining what N3 editing model preprocessors are associated with the system
## This is technically a JAVA interface but we can designate this as an owl:Class to indicate
## which classes are model change preprocessors

<java:edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.ModelChangePreprocessor> a owl:Class .
########Data Properties#########

###Basic

rdfs:comment
      a       owl:DatatypeProperty .
rdfs:label
      a       owl:DatatypeProperty .
owl:versionInfo
      a       owl:DatatypeProperty .

###Vitro model

vitro:modTime
      a       owl:DatatypeProperty .
vitro:displayRank
      a       owl:DatatypeProperty .
vitro:customDisplayViewAnnot
      a       owl:DatatypeProperty .

###Display model

display:listViewConfigFile
    a       owl:DatatypeProperty .

display:title
    a       owl:DatatypeProperty .

display:urlMapping
    a       owl:DatatypeProperty .

display:requiresBodyTemplate
    a       owl:DatatypeProperty .

display:isSelfContainedTemplate
    a       owl:DatatypeProperty .

display:menuPosition
    a       owl:DatatypeProperty ;
    vitro:displayLimitAnnot
              "1"^^xsd:int .

display:linkText
    a       owl:DatatypeProperty .

display:hasMenuText
    a       owl:DatatypeProperty .

display:usesDataGetterClass
    a       owl:DatatypeProperty .

display:query
    a owl:DatatypeProperty .

display:saveToVar
    a owl:DatatypeProperty.

display:queryModel
    a owl:DatatypeProperty.

display:htmlValue
    a owl:DatatypeProperty.

display:cannotDeletePage
    a owl:DatatypeProperty.

######### Object Properties#########
###Basic
rdfs:range
      a       owl:ObjectProperty .
rdfs:domain
      a       owl:ObjectProperty .
owl:topObjectProperty
      a owl:ObjectProperty .

display:hasVClassId
    a owl:ObjectProperty ;
    rdfs:comment "Object property defining class for search data getter" .

###Vitro properties without which individual templates throw errors as are required

<http://vitro.mannlib.cornell.edu/ns/vitro/public#mainImage>
      a       owl:ObjectProperty ;
      rdfs:range <http://vitro.mannlib.cornell.edu/ns/vitro/public#File> ;
      rdfs:subPropertyOf <http://vitro.mannlib.cornell.edu/ns/vitro/public#mainImage> , owl:topObjectProperty .

vitro:primaryLink
      a       owl:ObjectProperty ;
      rdfs:label "Primary Link"@en-US ;
      rdfs:range vitro:Link ;
      rdfs:subPropertyOf vitro:primaryLink , owl:topObjectProperty ;
      vitro:customEntryFormAnnot
              "defaultLinkForm.jsp"^^xsd:string ;
      vitro:forceStubDeletionAnnot
              "true"^^xsd:boolean ;
      vitro:offerCreateNewOptionAnnot
              "true"^^xsd:boolean ;
      vitro:selectFromExistingAnnot
              "false"^^xsd:boolean ;
      vitro:stubObjectPropertyAnnot
              "true"^^xsd:boolean .

rdf:type
      a owl:ObjectProperty ;
      rdfs:label "RDF Type"@en-US ;
      rdfs:range owl:Class ;
      vitro:customEntryFormAnnot
         "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.RdfTypeGenerator"^^xsd:string ;
      vitro:offerCreateNewOptionAnnot
              "true"^^xsd:boolean ;
      vitro:selectFromExistingAnnot
              "true"^^xsd:boolean .


vitro:additionalLink
      a       owl:ObjectProperty ;
      rdfs:label "Additional Link"@en-US ;
      rdfs:range vitro:Link ;
      rdfs:subPropertyOf vitro:additionalLink , owl:topObjectProperty ;
      vitro:customEntryFormAnnot
              "defaultLinkForm.jsp"^^xsd:string ;
      vitro:forceStubDeletionAnnot
              "true"^^xsd:boolean ;
      vitro:offerCreateNewOptionAnnot
              "true"^^xsd:boolean ;
      vitro:selectFromExistingAnnot
              "false"^^xsd:boolean ;
      vitro:stubObjectPropertyAnnot
              "true"^^xsd:boolean .

###Display model

display:hasElement
      a       owl:ObjectProperty .

display:hasDeleteQuery
      a       owl:DataProperty .

display:excludeClass
      a       owl:ObjectProperty .

display:toPage
      a       owl:ObjectProperty .

display:forClassGroup
      a       owl:ObjectProperty .

display:hasDataGetter
      a       owl:ObjectProperty .

display:getIndividualsForClass
      a       owl:ObjectProperty .

display:restrictResultsByClass
      a       owl:ObjectProperty .

display:requiresAction
      a owl:ObjectProperty .

