PREFIX csvw: <http://www.w3.org/ns/csvw#>
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#>

csvw:Row a rdfs:Class ;
  rdfs:label "Row"@en ;
  rdfs:comment "A Row represents a horizontal arrangement of cells within a Table."@en .

csvw:referencedRow a rdf:Property ;
  rdfs:label "referenced rows"@en ;
  rdfs:comment "A possibly empty list of pairs of a foreign key and a row in a table within the same group of tables."@en ;
  rdfs:domain csvw:Row ;
  rdfs:range <https://w3id.org/linkml/Any> .

csvw:primaryKey a rdf:Property ;
  rdfs:label "primary key"@en ;
  rdfs:comment """For Schema: A column reference property that holds either a single reference to a column description object or an array of references.

For Row: a possibly empty list of cells whose values together provide a unique identifier for this row. This is similar to the name of a column."""@en ;
  rdfs:range xsd:string .

csvw:describes a rdf:Property ;
  rdfs:label "describes"@en ;
  rdfs:comment "From IANA describes: The relationship A 'describes' B asserts that resource A provides a description of resource B. There are no constraints on the format or representation of either A or B, neither are there any further constraints on either resource."@en ;
  rdfs:domain csvw:Row ;
  rdfs:range <https://w3id.org/linkml/Any> .

csvw:title a rdf:Property ;
  rdfs:label "title"@en ;
  rdfs:comment """For a Transformation A natural language property that describes the format that will be generated from the transformation.

For a Column: A natural language property that provides possible alternative names for the column."""@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

csvw:Dialect a rdfs:Class ;
  rdfs:label "Dialect Description"@en ;
  rdfs:comment "A Dialect Description provides hints to parsers about how to parse a linked file."@en .

csvw:headerRowCount a rdf:Property ;
  rdfs:label "header row count"@en ;
  rdfs:comment "An numeric atomic property that sets the header row count flag to the single provided value, which must be a non-negative integer."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:nonNegativeInteger .

csvw:doubleQuote a rdf:Property ;
  rdfs:label "double quote"@en ;
  rdfs:comment "A boolean atomic property that, if `true`, sets the escape character flag to `\"`."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:boolean .

csvw:skipColumns a rdf:Property ;
  rdfs:label "skip columns"@en ;
  rdfs:comment "An numeric atomic property that sets the `skip columns` flag to the single provided numeric value, which MUST be a non-negative integer."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:nonNegativeInteger .

csvw:lineTerminators a rdf:Property ;
  rdfs:label "line terminators"@en ;
  rdfs:comment "An atomic property that sets the line terminators flag to either an array containing the single provided string value, or the provided array."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:string .

csvw:skipRows a rdf:Property ;
  rdfs:label "skip rows"@en ;
  rdfs:comment "An numeric atomic property that sets the `skip rows` flag to the single provided numeric value, which MUST be a non-negative integer."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:nonNegativeInteger .

csvw:quoteChar a rdf:Property ;
  rdfs:label "quote char"@en ;
  rdfs:comment "An atomic property that sets the quote character flag to the single provided value, which must be a string or `null`."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:string .

csvw:header a rdf:Property ;
  rdfs:label "header"@en ;
  rdfs:comment "A boolean atomic property that, if `true`, sets the header row count flag to `1`, and if `false` to `0`, unless headerRowCount is provided, in which case the value provided for the header property is ignored."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:boolean .

csvw:trim a rdf:Property ;
  rdfs:label "trim"@en ;
  rdfs:comment "An atomic property that, if the boolean `true`, sets the trim flag to `true` and if the boolean `false` to `false`. If the value provided is a string, sets the trim flag to the provided value, which must be one of \"true\", \"false\", \"start\" or \"end\"."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:boolean .

csvw:delimiter a rdf:Property ;
  rdfs:label "delimiter"@en ;
  rdfs:comment "An atomic property that sets the delimiter flag to the single provided value, which MUST be a string."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:string .

csvw:encoding a rdf:Property ;
  rdfs:label "encoding"@en ;
  rdfs:comment "An atomic property that sets the encoding flag to the single provided string value, which MUST be a defined in [[encoding]]. The default is \"utf-8\"."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:string .

csvw:commentPrefix a rdf:Property ;
  rdfs:label "comment prefix"@en ;
  rdfs:comment "An atomic property that sets the comment prefix flag to the single provided value, which MUST be a string."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:string .

csvw:skipBlankRows a rdf:Property ;
  rdfs:label "skip blank rows"@en ;
  rdfs:comment "An boolean atomic property that sets the `skip blank rows` flag to the single provided boolean value."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:boolean .

csvw:skipInitialSpace a rdf:Property ;
  rdfs:label "skip initial space"@en ;
  rdfs:comment "A boolean atomic property that, if `true`, sets the trim flag to \"start\". If `false`, to `false`."@en ;
  rdfs:domain csvw:Dialect ;
  rdfs:range xsd:boolean .

csvw:Datatype a rdfs:Class ;
  rdfs:label "Datatype"@en ;
  rdfs:comment "Describes facets of a datatype."@en .

csvw:format a rdf:Property ;
  rdfs:label "format"@en ;
  rdfs:comment "An atomic property that contains either a single string or an object that defines the format of a value of this type, used when parsing a string value as described in Parsing Cells in [[tabular-data-model]]."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:string .

csvw:minInclusive a rdf:Property ;
  rdfs:label "min inclusive"@en ;
  rdfs:comment "An atomic property that contains a single number that is the minimum valid value (inclusive)."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:integer .

csvw:minExclusive a rdf:Property ;
  rdfs:label "min exclusive"@en ;
  rdfs:comment "An atomic property that contains a single number that is the minimum valid value (exclusive)."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:integer .

csvw:minLength a rdf:Property ;
  rdfs:label "min length"@en ;
  rdfs:comment "An atomic property that contains a single integer that is the minimum length of the value."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:nonNegativeInteger .

csvw:length a rdf:Property ;
  rdfs:label "length"@en ;
  rdfs:comment "The exact length of the value of the cell."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:nonNegativeInteger .

csvw:base a rdf:Property ;
  rdfs:label "base"@en ;
  rdfs:comment "An atomic property that contains a single string: a term defined in the default context representing a built-in datatype URL, as listed above."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:string .

csvw:maxExclusive a rdf:Property ;
  rdfs:label "max exclusive"@en ;
  rdfs:comment "An atomic property that contains a single number that is the maximum valid value (exclusive)."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:integer .

csvw:maxInclusive a rdf:Property ;
  rdfs:label "max inclusive"@en ;
  rdfs:comment "An atomic property that contains a single number that is the maximum valid value (inclusive)."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:integer .

csvw:maxLength a rdf:Property ;
  rdfs:label "max length"@en ;
  rdfs:comment "A numeric atomic property that contains a single integer that is the maximum length of the value."@en ;
  rdfs:domain csvw:Datatype ;
  rdfs:range xsd:nonNegativeInteger .

csvw:Cell a rdfs:Class ;
  rdfs:label "Cell"@en ;
  rdfs:comment "A Cell represents a cell at the intersection of a Row and a Column within a Table."@en .

csvw:Table a rdfs:Class ;
  rdfs:label "Annotated Table"@en ;
  rdfs:comment "An annotated table is a table that is annotated with additional metadata."@en .

csvw:textDirection a rdf:Property ;
  rdfs:label "text direction"@en ;
  rdfs:comment "An atomic property that must have a single value that is one of `rtl` or `ltr` (the default)."@en ;
  rdfs:range csvw:Direction .

csvw:row a rdf:Property ;
  rdfs:label "row"@en ;
  rdfs:comment "Relates a Table to each Row output."@en ;
  rdfs:domain csvw:Table ;
  rdfs:range csvw:Row .

csvw:foreignKey a rdf:Property ;
  rdfs:label "foreign key"@en ;
  rdfs:comment """For a Table: a list of foreign keys on the table.

For a Schema: an array property of foreign key definitions that define how the values from specified columns within this table link to rows within this table or other tables."""@en ;
  rdfs:range csvw:ForeignKey .

csvw:transformations a rdf:Property ;
  rdfs:label "transformations"@en ;
  rdfs:comment "An array property of transformation definitions that provide mechanisms to transform the tabular data into other formats."@en ;
  rdfs:range csvw:Transformation .

csvw:note a rdf:Property ;
  rdfs:label "note"@en ;
  rdfs:comment "An array property that provides an array of objects representing arbitrary annotations on the annotated tabular data model."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

csvw:default a rdf:Property ;
  rdfs:label "default"@en ;
  rdfs:comment "An atomic property holding a single string that is used to create a default value for the cell in cases where the original string value is an empty string."@en ;
  rdfs:range xsd:string .

csvw:aboutUrl a rdf:Property ;
  rdfs:label "about URL"@en ;
  rdfs:comment "A URI template property that MAY be used to indicate what a cell contains information about."@en ;
  rdfs:range csvw:uriTemplate .

csvw:datatype a rdf:Property ;
  rdfs:label "datatype"@en ;
  rdfs:comment "An object property that contains either a single string that is the main datatype of the values of the cell or a datatype description object. If the value of this property is a string, it MUST be one of the built-in datatypes defined in section 5.11.1 Built-in Datatypes or an absolute URL; if it is an object then it describes a more specialised datatype."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

csvw:dialect a rdf:Property ;
  rdfs:label "dialect"@en ;
  rdfs:comment "An object property that provides a single dialect description. If provided, dialect provides hints to processors about how to parse the referenced files to create tabular data models for the tables in the group."@en ;
  rdfs:range csvw:Dialect .

csvw:tableSchema a rdf:Property ;
  rdfs:label "table schema"@en ;
  rdfs:comment "An object property that provides a single schema description as described in section 5.5 Schemas, used as the default for all the tables in the group"@en ;
  rdfs:range csvw:Schema .

csvw:tableDirection a rdf:Property ;
  rdfs:label "table direction"@en ;
  rdfs:comment "One of `rtl`, `ltr` or `auto`. Indicates whether the tables in the group should be displayed with the first column on the right, on the left, or based on the first character in the table that has a specific direction."@en ;
  rdfs:range csvw:Direction .

csvw:url a rdf:Property ;
  rdfs:label "url"@en ;
  rdfs:comment """For a Table: This link property gives the single URL of the CSV file that the table is held in, relative to the location of the metadata document.

For a Transformation: A link property giving the single URL of the file that the script or template is held in, relative to the location of the metadata document."""@en ;
  rdfs:range xsd:anyURI .

csvw:separator a rdf:Property ;
  rdfs:label "separator"@en ;
  rdfs:comment "An atomic property that MUST have a single string value that is the character used to separate items in the string value of the cell."@en ;
  rdfs:range xsd:string .

csvw:valueUrl a rdf:Property ;
  rdfs:label "valueUrl"@en ;
  rdfs:comment "An URI template property that is used to map the values of cells into URLs."@en ;
  rdfs:range csvw:uriTemplate .

csvw:suppressOutput a rdf:Property ;
  rdfs:label "suppress output"@en ;
  rdfs:comment "A boolean atomic property. If `true`, suppresses any output that would be generated when converting a table or cells within a column."@en ;
  rdfs:range xsd:boolean .

csvw:null a rdf:Property ;
  rdfs:label "null"@en ;
  rdfs:comment "An atomic property giving the string or strings used for null values within the data. If the string value of the cell is equal to any one of these values, the cell value is `null`."@en ;
  rdfs:range xsd:string .

csvw:ordered a rdf:Property ;
  rdfs:label "ordered"@en ;
  rdfs:comment "A boolean atomic property taking a single value which indicates whether a list that is the value of the cell is ordered (if `true`) or unordered (if `false`)."@en ;
  rdfs:range xsd:boolean .

csvw:required a rdf:Property ;
  rdfs:label "required"@en ;
  rdfs:comment "A boolean atomic property taking a single value which indicates whether the cell must have a non-null value. The default is `false`. "@en ;
  rdfs:range xsd:boolean .

csvw:lang a rdf:Property ;
  rdfs:label "language"@en ;
  rdfs:comment "An atomic property giving a single string language code as defined by [[BCP47]]."@en ;
  rdfs:range xsd:string .

csvw:propertyUrl a rdf:Property ;
  rdfs:label "property URL"@en ;
  rdfs:comment "An URI template property that MAY be used to create a URI for a property if the table is mapped to another format. "@en ;
  rdfs:range csvw:uriTemplate .

csvw:Transformation a rdfs:Class ;
  rdfs:label "Transformation Definition"@en ;
  rdfs:comment "A Transformation Definition is a definition of how tabular data can be transformed into another format."@en .

csvw:targetFormat a rdf:Property ;
  rdfs:label "target format"@en ;
  rdfs:comment "A link property giving the single URL for the format that will be created through the transformation."@en ;
  rdfs:domain csvw:Transformation ;
  rdfs:range xsd:anyURI .

csvw:source a rdf:Property ;
  rdfs:label "source"@en ;
  rdfs:comment "A single string atomic property that provides, if specified, the format to which the tabular data should be transformed prior to the transformation using the script or template."@en ;
  rdfs:domain csvw:Transformation ;
  rdfs:range xsd:string .

csvw:scriptFormat a rdf:Property ;
  rdfs:label "script format"@en ;
  rdfs:comment "A link property giving the single URL for the format that is used by the script or template."@en ;
  rdfs:domain csvw:Transformation ;
  rdfs:range xsd:anyURI .

csvw:Schema a rdfs:Class ;
  rdfs:label "Schema"@en ;
  rdfs:comment "A Schema is a definition of a tabular format that may be common to multiple tables."@en .

csvw:column a rdf:Property ;
  rdfs:label "column"@en ;
  rdfs:comment "An array property of column descriptions as described in section 5.6 Columns."@en ;
  rdfs:domain csvw:Schema ;
  rdfs:range csvw:Column .

csvw:rowTitle a rdf:Property ;
  rdfs:label "row titles"@en ;
  rdfs:comment "A column reference property that holds either a single reference to a column description object or an array of references."@en ;
  rdfs:domain csvw:Schema ;
  rdfs:range xsd:string .

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

<http://www.w3.org/ns/prov#Role> a rdfs:Class .

csvw:NumericFormat a rdfs:Class ;
  rdfs:label "Numeric Format"@en ;
  rdfs:comment "If the datatype is a numeric type, the format property indicates the expected format for that number. Its value must be either a single string or an object with one or more properties."@en .

csvw:decimalChar a rdf:Property ;
  rdfs:label "decimal character"@en ;
  rdfs:comment "A string whose value is used to represent a decimal point within the number."@en ;
  rdfs:domain csvw:NumericFormat ;
  rdfs:range xsd:string .

csvw:groupChar a rdf:Property ;
  rdfs:label "group character"@en ;
  rdfs:comment "A string whose value is used to group digits within the number."@en ;
  rdfs:domain csvw:NumericFormat ;
  rdfs:range <https://w3id.org/linkml/Any> .

csvw:pattern a rdf:Property ;
  rdfs:label "pattern"@en ;
  rdfs:comment "A regular expression string, in the syntax and interpreted as defined by [[ECMASCRIPT]]."@en ;
  rdfs:domain csvw:NumericFormat ;
  rdfs:range xsd:string .

csvw:Column a rdfs:Class ;
  rdfs:label "Column Description"@en ;
  rdfs:comment "A Column represents a vertical arrangement of Cells within a Table."@en .

csvw:name a rdf:Property ;
  rdfs:label "name"@en ;
  rdfs:comment "An atomic property that gives a single canonical name for the column. The value of this property becomes the name annotation for the described column."@en ;
  rdfs:domain csvw:Column ;
  rdfs:range xsd:string .

csvw:virtual a rdf:Property ;
  rdfs:label "virtual"@en ;
  rdfs:comment "A boolean atomic property taking a single value which indicates whether the column is a virtual column not present in the original source"@en ;
  rdfs:domain csvw:Column ;
  rdfs:range xsd:boolean .

csvw:TableGroup a rdfs:Class ;
  rdfs:label "Group of Tables"@en ;
  rdfs:comment "A Group of Tables comprises a set of Annotated Tables and a set of annotations that relate to those Tables."@en .

csvw:table a rdf:Property ;
  rdfs:label "table"@en ;
  rdfs:comment "Relates an Table group to annotated tables."@en ;
  rdfs:domain csvw:TableGroup ;
  rdfs:range csvw:Table .

csvw:TableReference a rdfs:Class ;
  rdfs:label "Table Reference"@en ;
  rdfs:comment "An object property that identifies a referenced table and a set of referenced columns within that table."@en .

csvw:resource a rdf:Property ;
  rdfs:label "resource"@en ;
  rdfs:comment "A link property holding a URL that is the identifier for a specific table that is being referenced."@en ;
  rdfs:domain csvw:TableReference ;
  rdfs:range xsd:anyURI .

csvw:schemaReference a rdf:Property ;
  rdfs:label "schema reference"@en ;
  rdfs:comment "A link property holding a URL that is the identifier for a schema that is being referenced."@en ;
  rdfs:domain csvw:TableReference ;
  rdfs:range xsd:anyURI .

csvw:columnReference a rdf:Property ;
  rdfs:label "column reference"@en ;
  rdfs:comment "A column reference property that holds either a single reference to a column description object within this schema, or an array of references. These form the referencing columns for the foreign key definition."@en ;
  rdfs:range xsd:string .

csvw:ForeignKey a rdfs:Class ;
  rdfs:label "Foreign Key Definition"@en ;
  rdfs:comment "Describes relationships between Columns in one or more Tables."@en .

csvw:reference a rdf:Property ;
  rdfs:label "reference"@en ;
  rdfs:comment "An object property that identifies a **referenced table** and a set of **referenced columns** within that table."@en ;
  rdfs:domain csvw:ForeignKey ;
  rdfs:range csvw:TableReference .

csvw:rownum a rdf:Property ;
  rdfs:label "row number"@en ;
  rdfs:comment "The position of the row amongst the rows of the Annotated Tabl, starting from 1"@en ;
  rdfs:range xsd:integer .

csvw:JSON a rdfs:Datatype ;
  rdfs:label "JSON"@en ;
  rdfs:comment "A literal containing JSON."@en .

csvw:uriTemplate a rdfs:Datatype ;
  rdfs:label "uri template"@en ;
  rdfs:comment ""@en .

csvw:Direction a rdfs:Class ;
  rdfs:label "Direction"@en ;
  rdfs:comment "The class of table/text directions."@en .

csvw:ltr a csvw:Direction ;
  rdfs:label "left to right"@en ;
  rdfs:comment "Indicates whether the tables in the group should be displayed with the first column on the right."@en .

csvw:rtl a csvw:Direction ;
  rdfs:label "right to left"@en ;
  rdfs:comment "Indicates whether the tables in the group should be displayed with the first column on the left."@en .

csvw:auto a csvw:Direction ;
  rdfs:label "auto"@en ;
  rdfs:comment "Indicates whether the tables in the group should be displayed based on the first character in the table that has a specific direction."@en .

csvw:inherit a csvw:Direction ;
  rdfs:label "inherit"@en ;
  rdfs:comment "For `textDirection`, indicates that the direction is inherited from the `tableDirection` annotation of the `table`."@en .
