PREFIX fresnel: <http://www.w3.org/2004/09/fresnel#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

fresnel:LabellingFormat a rdfs:Class ;
  rdfs:label "Labelling Format" ;
  rdfs:comment "Abstract superclass of all labelling formats." .

fresnel:Format a rdfs:Class ;
  rdfs:label "Format Class" ;
  rdfs:comment "A Fresnel format class for displaying RDF data; the domain property can be only one of :formatDomain, :classFormatDomain, :instanceFormatDomain." .

fresnel:classFormatDomain a rdf:Property ;
  rdfs:label "class format domain" ;
  rdfs:comment "The Format should be applied to instances of this class." ;
  rdfs:domain fresnel:Format ;
  rdfs:range rdfs:Class .

fresnel:valueFormat a rdf:Property ;
  rdfs:label "value format" ;
  rdfs:comment "Assign content formatting to a set of values (only works in conjunction with propertyFormatDomain)." ;
  rdfs:range fresnel:FormatDescriptionNoSubstitution .

fresnel:propertyFormat a rdf:Property ;
  rdfs:label "property format" ;
  rdfs:comment "Assign content formatting to a set of properties (only works in conjunction with propertyFormatDomain)." ;
  rdfs:range fresnel:FormatDescriptionSubstitution .

fresnel:labelStyle a rdf:Property ;
  rdfs:label "label style" ;
  rdfs:comment "Attaching a symbol appropriate for styling labels (only works in conjunction with propertyFormatDomain)." ;
  rdfs:range xsd:string .

fresnel:label a rdf:Property ;
  rdfs:label "label" ;
  rdfs:comment "Specifies how a property is labelled (only works in conjunction with propertyFormatDomain)." ;
  rdfs:domain fresnel:Format ;
  rdfs:range <https://w3id.org/linkml/Any> .

fresnel:instanceFormatDomain a rdf:Property ;
  rdfs:label "instance format domain" ;
  rdfs:comment "The Format should be applied to this set of instances." ;
  rdfs:domain fresnel:Format ;
  rdfs:range <https://w3id.org/linkml/Any> .

fresnel:propertyFormatDomain a rdf:Property ;
  rdfs:label "property format domain" ;
  rdfs:comment "The Format should be used for the specified properties." ;
  rdfs:domain fresnel:Format ;
  rdfs:range xsd:string .

fresnel:purpose a rdf:Property ;
  rdfs:label "purpose" ;
  rdfs:comment "Specifies a purpose for which a lens or format might be appropriate." ;
  rdfs:range fresnel:Purpose .

fresnel:propertyStyle a rdf:Property ;
  rdfs:label "property style" ;
  rdfs:comment "Attaching a symbol appropriate for styling properties (only works in conjunction with propertyFormatDomain)." ;
  rdfs:range xsd:string .

fresnel:labelFormat a rdf:Property ;
  rdfs:label "label format" ;
  rdfs:comment "Assign content formatting to a set of labels (theoretically, this does not make much sense, but it does round out the set of formatting properties; only works in conjunction with propertyFormatDomain)." ;
  rdfs:range fresnel:FormatDescriptionSubstitution .

fresnel:resourceFormat a rdf:Property ;
  rdfs:label "resource format" ;
  rdfs:comment "Assign content formatting to a set of resources (only works in conjunction with classFormatDomain and instanceFormatDomain)." ;
  rdfs:range fresnel:FormatDescriptionNoSubstitution .

fresnel:valueStyle a rdf:Property ;
  rdfs:label "value style" ;
  rdfs:comment "Attaching a symbol appropriate for styling the values of a property (only works in conjunction with propertyFormatDomain)." ;
  rdfs:range xsd:string .

fresnel:value a rdf:Property ;
  rdfs:label "property value" ;
  rdfs:comment "Specifies how a property value is displayed (only works in conjunction with propertyFormatDomain)." ;
  rdfs:domain fresnel:Format ;
  rdfs:range fresnel:PropertyValueStyle .

fresnel:group a rdf:Property ;
  rdfs:label "group" ;
  rdfs:comment "Specifies the format group to which a format or a lens belongs." ;
  rdfs:range fresnel:Group .

fresnel:Lens a rdfs:Class ;
  rdfs:label "Lens" ;
  rdfs:comment "Lens for viewing RDF data." .

fresnel:instanceLensDomain a rdf:Property ;
  rdfs:label "instance lens domain" ;
  rdfs:comment "The lens is usable for the specified set of instances." ;
  rdfs:domain fresnel:Lens ;
  rdfs:range <https://w3id.org/linkml/Any> .

fresnel:showProperties a rdf:Property ;
  rdfs:label "show properties" ;
  rdfs:comment "List of all properties which should be shown." ;
  rdfs:domain fresnel:Lens ;
  rdfs:range xsd:string .

fresnel:hideProperties a rdf:Property ;
  rdfs:label "hide properties" ;
  rdfs:comment "List of all properties which should be hidden.  Must be used together with 'fresnel:showProperties fresnel:allProperties.'" ;
  rdfs:domain fresnel:Lens ;
  rdfs:range xsd:string .

fresnel:use a rdf:Property ;
  rdfs:label "use" ;
  rdfs:comment "Explicit definition of fresnel:Group containing formats that should be used to render the lens or sublens." ;
  rdfs:range xsd:string .

fresnel:resourceStyle a rdf:Property ;
  rdfs:label "resource style" ;
  rdfs:comment "Attaching a symbol appropriate for styling a resource.  resourceStyle is ignored if not used with :classFormatDomain or :instanceFormatDomain." ;
  rdfs:range xsd:string .

fresnel:classLensDomain a rdf:Property ;
  rdfs:label "class lens domain" ;
  rdfs:comment "Specifies that the lens is usable for the specified class and its subclasses." ;
  rdfs:domain fresnel:Lens ;
  rdfs:range rdfs:Class .

fresnel:PropertyDescription a rdfs:Class ;
  rdfs:label "Property Description" ;
  rdfs:comment "More detailed description of the property, e.g. for specifing sublenses or merging properties." .

fresnel:property a rdf:Property ;
  rdfs:label "property" ;
  rdfs:comment "The RDF property, which is described." ;
  rdfs:domain fresnel:PropertyDescription ;
  rdfs:range rdf:Property .

fresnel:sublens a rdf:Property ;
  rdfs:label "sublens" ;
  rdfs:comment "Sublens which should be used for displaying property values." ;
  rdfs:domain fresnel:PropertyDescription ;
  rdfs:range fresnel:Lens .

fresnel:depth a rdf:Property ;
  rdfs:label "depth" ;
  rdfs:comment "Closure mechanism, if lenses are recursively used; the recursive depth limit." ;
  rdfs:domain fresnel:PropertyDescription ;
  rdfs:range xsd:nonNegativeInteger .

rdf:nil a rdfs:Class .

fresnel:Group a rdfs:Class ;
  rdfs:label "Group" ;
  rdfs:comment "A Fresnel Group is used for grouping formats and lenses together." .

fresnel:primaryClasses a rdf:Property ;
  rdfs:label "primaryClasses" ;
  rdfs:comment "Specifies the classes that should be considered primaries, or first class results; secondary resources not matching the primaries will only be shown as sublenses.  The range is a list of resource selectors." ;
  rdfs:domain fresnel:Group ;
  rdfs:range fresnel:ClassList .

fresnel:FormatDescriptionSubstitution a rdfs:Class ;
  rdfs:label "Format Description Substitution" ;
  rdfs:comment "Description of fresnel:Format content separators and content replacement if values are missing." ;
  rdfs:subClassOf fresnel:FormatDescription .

fresnel:contentBefore a rdf:Property ;
  rdfs:label "content before" ;
  rdfs:comment "Content that should be displayed before the content of the current box." ;
  rdfs:domain fresnel:FormatDescription ;
  rdfs:range xsd:string .

fresnel:contentLast a rdf:Property ;
  rdfs:label "content last" ;
  rdfs:comment "Content that should be displayed after the content of the last element in a list of boxes; takes over the last :contentAfter element in case of a conflict." ;
  rdfs:domain fresnel:FormatDescription ;
  rdfs:range xsd:string .

fresnel:contentFirst a rdf:Property ;
  rdfs:label "content first" ;
  rdfs:comment "Content that should be displayed before the content of the first element in a list of boxes; takes over the first :contentBefore element in case of a conflict." ;
  rdfs:domain fresnel:FormatDescription ;
  rdfs:range xsd:string .

fresnel:contentNoValue a rdf:Property ;
  rdfs:label "content no value" ;
  rdfs:comment "Content that should be displayed if the current property is missing." ;
  rdfs:domain fresnel:FormatDescriptionSubstitution ;
  rdfs:range xsd:string .

fresnel:contentAfter a rdf:Property ;
  rdfs:label "content after" ;
  rdfs:comment "Content that should be displayed before the content of the current box." ;
  rdfs:domain fresnel:FormatDescription ;
  rdfs:range xsd:string .

fresnel:HidePropertyList a rdfs:Class ;
  rdfs:label "Hide Property List" ;
  rdfs:comment "This is a convenience class for the OWL specification of Fresnel." ;
  rdfs:subClassOf rdf:List .

rdfs:Class a rdfs:Class .

fresnel:ClassList a rdfs:Class ;
  rdfs:comment "This is a convenience class for the OWL specification of Fresnel (an rdf:List of resource selectors only)." ;
  rdfs:subClassOf rdf:List .

fresnel:PropertyValueStyle a rdfs:Class ;
  rdfs:label "Property value display style" ;
  rdfs:comment "Abstract superclass of all property value display styles." .

fresnel:ShowPropertyList a rdfs:Class ;
  rdfs:label "Show Property List" ;
  rdfs:comment "This is a convenience class for the OWL specification of Fresnel." ;
  rdfs:subClassOf rdf:List .

fresnel:FormatDescriptionNoSubstitution a rdfs:Class ;
  rdfs:label "Format Description No Substitution" ;
  rdfs:comment "Description of fresnel:Format content separators only; contentNoValue will not be recognized in conjunction with this class." ;
  rdfs:subClassOf fresnel:FormatDescription .

fresnel:FormatDescription a rdfs:Class ;
  rdfs:label "Format Description" ;
  rdfs:comment "Description of fresnel:Format content separators; super class, not to be used directly." .

fresnel:ConvenienceToken a rdfs:Class ;
  rdfs:label "Convenience Token" ;
  rdfs:comment "Abstract class for expressing shorthands a browser must understand how to expand." .

rdf:List a rdfs:Class .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object" .

rdf:Property a rdfs:Class .

fresnel:ConvienceProperty a rdfs:Class ;
  rdfs:label "Convenience Property" ;
  rdfs:comment "Abstract class of pseudo properties." ;
  rdfs:subClassOf fresnel:ConvenienceToken .

fresnel:member a fresnel:ConvienceProperty ;
  rdfs:label "member" ;
  rdfs:comment "A special token to indicate the relationship between any RDF container or collection (rdf:List) and its member items.  Do not use as anything other than an individual." .

fresnel:PropertySet a rdfs:Class ;
  rdfs:label "Property Set" ;
  rdfs:comment "Abstract class of property sets." ;
  rdfs:subClassOf fresnel:ConvenienceToken .

fresnel:allProperties a fresnel:PropertySet ;
  rdfs:label "All Properties" ;
  rdfs:comment "Set of all properties of the current instance, which have not be explicitly named before." .

fresnel:Purpose a rdfs:Class ;
  rdfs:label "Purpose" ;
  rdfs:comment "Propose in which a specific lens might be appropriate." .

fresnel:labelLens a fresnel:Purpose ;
  rdfs:label "Label Lens" ;
  rdfs:comment "Lens for providing a label for a resource." .

fresnel:defaultLens a fresnel:Purpose ;
  rdfs:label "Default Lens" ;
  rdfs:comment "Provides the browser with a starting point which lens to show." .
