PREFIX rb: <https://w3id.org/riverbench/schema/metadata#>
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#>

rb:StatementCountStreamElementSplit a rdfs:Class ;
  rdfs:label "Stream elements split by statement count"@en ;
  rdfs:comment "The number of statements in an element was the criterion for splitting the stream elements."@en ;
  rdfs:subClassOf rb:StreamElementSplit .

rb:QuotedTripleCountStatistics a rdfs:Class ;
  rdfs:label "Quoted triple count statistics"@en ;
  rdfs:comment "Statistics about the number of quoted triples in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

rb:statisticalProperty a rdf:Property ;
  rdfs:label "Statistical property"@en ;
  rdfs:comment "The base statistical property."@en ;
  rdfs:domain rb:Statistics ;
  rdfs:range <https://w3id.org/linkml/Any> .

rb:LiteralCountStatistics a rdfs:Class ;
  rdfs:label "Literal count statistics"@en ;
  rdfs:comment "Statistics about the number of literals in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

rb:TopicStreamElementSplit a rdfs:Class ;
  rdfs:label "Stream elements split by topic"@en ;
  rdfs:comment "The elements correspond to different topics/subjects in the dataset."@en ;
  rdfs:subClassOf rb:StreamElementSplit .

rb:Profile a rdfs:Class ;
  rdfs:label "Benchmark profile"@en ;
  rdfs:comment "Benchmark profile grouping several datasets in RiverBench"@en ;
  rdfs:subClassOf <http://www.w3.org/ns/dcat#DatasetSeries> .

rb:isSupersetOfProfile a rdf:Property ;
  rdfs:label "Is superset of profile"@en ;
  rdfs:comment "Indicates that this profile contains all datasets of the other profile"@en ;
  rdfs:domain rb:Profile ;
  rdfs:range rb:Profile .

rb:hasRestriction a rdf:Property ;
  rdfs:label "Has restriction"@en ;
  rdfs:comment "Has profile restriction. The restrictions are joined with the AND operator."@en ;
  rdfs:domain rb:Profile ;
  rdfs:range rb:ProfileRestriction .

rb:isSubsetOfProfile a rdf:Property ;
  rdfs:label "Is subset of profile"@en ;
  rdfs:comment "Indicates that this profile's datasets are all in the other profile"@en ;
  rdfs:domain rb:Profile ;
  rdfs:range rb:Profile .

rb:SubjectCountStatistics a rdfs:Class ;
  rdfs:label "Subject count statistics"@en ;
  rdfs:comment "Statistics about the number of subjects in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

rb:IriCountStatistics a rdfs:Class ;
  rdfs:label "IRI count statistics"@en ;
  rdfs:comment "Statistics about the number of IRIs in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

<http://www.w3.org/ns/dcat#DatasetSeries> a rdfs:Class ;
  rdfs:label "Dataset series"@en .

rb:LanguageLiteralCountStatistics a rdfs:Class ;
  rdfs:label "Language string count statistics"@en ;
  rdfs:comment "Statistics about the number of language literals in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

rb:PredicateCountStatistics a rdfs:Class ;
  rdfs:label "Predicate count statistics"@en ;
  rdfs:comment "Statistics about the number of predicates in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

rb:Distribution a rdfs:Class ;
  rdfs:label "RiverBench dataset distribution"@en ;
  rdfs:comment "A distribution of a dataset in the RiverBench benchmark suite."@en ;
  rdfs:subClassOf <http://www.w3.org/ns/dcat#Distribution> .

rb:hasFileName a rdf:Property ;
  rdfs:label "Has file name"@en ;
  rdfs:comment "Canonical file name of this distribution"@en ;
  rdfs:domain rb:Distribution ;
  rdfs:range xsd:string .

rb:hasStatistics a rdf:Property ;
  rdfs:label "Has statistics"@en ;
  rdfs:comment "Has a dataset statistics object"@en ;
  rdfs:domain rb:Distribution ;
  rdfs:range rb:Statistics .

rb:Statistics a rdfs:Class ;
  rdfs:label "Statistics"@en ;
  rdfs:comment "Class for statistics objects about distributions"@en .

rb:StreamElementSplit a rdfs:Class ;
  rdfs:label "Stream element split"@en ;
  rdfs:comment "Describes how was the stream split into individual elements."@en .

rb:ObjectCountStatistics a rdfs:Class ;
  rdfs:label "Object count statistics"@en ;
  rdfs:comment "Statistics about the number of objects in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

rb:ProfileRestriction a rdfs:Class ;
  rdfs:label "Profile restriction"@en ;
  rdfs:comment "Resource with properties that specify conditions for datasets to be included in the profile. The conditions are joined with the OR operator."@en .

rb:StatementCountStatistics a rdfs:Class ;
  rdfs:label "Statement count statistics"@en ;
  rdfs:comment "Statistics about the number of RDF statements in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

rb:DatatypeLiteralCountStatistics a rdfs:Class ;
  rdfs:label "Datatype literal count statistics"@en ;
  rdfs:comment "Statistics about the number of datatype literals (NOT of type rdf:langString) in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

<http://www.w3.org/ns/dcat#Dataset> a rdfs:Class .

rb:TimeStreamElementSplit a rdfs:Class ;
  rdfs:label "Stream elements split by time"@en ;
  rdfs:comment "The elements correspond to different instants or intervals of time."@en ;
  rdfs:subClassOf rb:StreamElementSplit .

rb:hasTemporalProperty a rdf:Property ;
  rdfs:label "Has temporal property"@en ;
  rdfs:comment "The IRI of the property that is used in the stream to denote time at which the event occured."@en ;
  rdfs:domain rb:TimeStreamElementSplit ;
  rdfs:range <https://w3id.org/linkml/Any> .

rb:RiverBench a rdfs:Class ;
  rdfs:label "RiverBench suite"@en ;
  rdfs:comment "RiverBench – RDF streaming benchmark suite"@en ;
  rdfs:subClassOf <http://www.w3.org/ns/dcat#Catalog> .

rb:hasProfile a rdf:Property ;
  rdfs:label "Has benchmark profile"@en ;
  rdfs:comment "Indicates benchmark profiles that belong to this benchmark suite."@en ;
  rdfs:domain rb:RiverBench ;
  rdfs:range rb:Profile ;
  rdfs:subPropertyOf <http://www.w3.org/ns/dcat#resource> .

<http://www.w3.org/ns/dcat#Distribution> a rdfs:Class .

rb:Dataset a rdfs:Class ;
  rdfs:label "RiverBench dataset"@en ;
  rdfs:comment "A dataset in the RiverBench benchmark suite"@en ;
  rdfs:subClassOf <http://www.w3.org/ns/dcat#Dataset> .

rb:hasStreamElementSplit a rdf:Property ;
  rdfs:label "Has stream element split"@en ;
  rdfs:comment "Indicates how the stream was split into elements."@en ;
  rdfs:domain rb:Dataset ;
  rdfs:range rb:StreamElementSplit .

rb:usesOntology a rdf:Property ;
  rdfs:label "Uses ontology"@en ;
  rdfs:comment "Indicates that the dataset uses an ontology. The object must be a resource, but it doesn't neccesarily have to be an OWL ontology."@en ;
  rdfs:domain rb:Dataset ;
  rdfs:range <https://w3id.org/linkml/Any> .

rb:BlankNodeCountStatistics a rdfs:Class ;
  rdfs:label "Blank node count statistics"@en ;
  rdfs:comment "Statistics about the number of blank nodes in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

rb:GraphCountStatistics a rdfs:Class ;
  rdfs:label "Graph count statistics"@en ;
  rdfs:comment "Statistics about the number of RDF graphs in the dataset, including the default graph."@en ;
  rdfs:subClassOf rb:Statistics .

rb:SimpleLiteralCountStatistics a rdfs:Class ;
  rdfs:label "Simple literal count statistics"@en ;
  rdfs:comment "Statistics about the number of simple literals (of type xsd:string) in the dataset."@en ;
  rdfs:subClassOf rb:Statistics .

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

<http://www.w3.org/ns/dcat#Catalog> a rdfs:Class .

<http://www.w3.org/ns/dcat#resource> a rdf:Property ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://www.w3.org/ns/dcat#seriesMember> a rdf:Property ;
  rdfs:label "Includes dataset"@en ;
  rdfs:comment "Indicates which datasets are included in the profile"@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

rb:conformanceProperty a rdf:Property ;
  rdfs:label "Conformance property"@en ;
  rdfs:comment "Base property for all conformance data properties"@en ;
  rdfs:range xsd:boolean .

rb:conformsToRdf11 a rdf:Property ;
  rdfs:label "Conforms to W3C RDF 1.1 specification"@en ;
  rdfs:comment "Whether the dataset is RDF 1.1-compliant, i.e., does not use any non-standard features, like generalized triples."@en ;
  rdfs:seeAlso <https://www.w3.org/TR/rdf11-concepts/> ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf rb:conformanceProperty .

rb:conformsToRdfStarDraft_20211217 a rdf:Property ;
  rdfs:label "Conforms to W3C RDF-star draft specification as of December 17, 2021"@en ;
  rdfs:comment "Whether the dataset is RDF-star compliant, i.e., does not use any non-standard features. Note that all standard RDF 1.1 datasets also qualify, as RDF-star is a superset of RDF 1.1."@en ;
  rdfs:seeAlso <https://www.w3.org/2021/12/rdf-star.html> ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf rb:conformanceProperty .

rb:hasDistributionType a rdf:Property ;
  rdfs:label "Has distribution type"@en ;
  rdfs:comment "Indicates the type of RiverBench dataset distribution"@en ;
  rdfs:range rb:DistributionType .

rb:hasStreamElementCount a rdf:Property ;
  rdfs:label "Has stream element count"@en ;
  rdfs:comment "Number of elements in the stream"@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

rb:hasStreamElementType a rdf:Property ;
  rdfs:label "Has stream element type"@en ;
  rdfs:comment "Indicates the type of contents of each stream element"@en ;
  rdfs:range rb:StreamElementType .

rb:hasVersion a rdf:Property ;
  rdfs:label "Has version"@en ;
  rdfs:comment "Version tag of an artifact"@en ;
  rdfs:range xsd:string .

rb:maximum a rdf:Property ;
  rdfs:label "Maximum"@en ;
  rdfs:comment "Maximum value of a distribution"@en ;
  rdfs:range xsd:decimal ;
  rdfs:subPropertyOf rb:statisticalProperty .

rb:mean a rdf:Property ;
  rdfs:label "Mean"@en ;
  rdfs:comment "Arithmetic mean of a distribution"@en ;
  rdfs:range xsd:decimal ;
  rdfs:subPropertyOf rb:statisticalProperty .

rb:minimum a rdf:Property ;
  rdfs:label "Minimum"@en ;
  rdfs:comment "Minimum value of a distribution"@en ;
  rdfs:range xsd:decimal ;
  rdfs:subPropertyOf rb:statisticalProperty .

rb:standardDeviation a rdf:Property ;
  rdfs:label "Standard deviation"@en ;
  rdfs:comment "Standard deviation of a distribution"@en ;
  rdfs:range xsd:decimal ;
  rdfs:subPropertyOf rb:statisticalProperty .

rb:sum a rdf:Property ;
  rdfs:label "Sum"@en ;
  rdfs:comment "Sum of all values in the distribution. In statistics about counts, this corresponds to the total number of given elements in the dataset."@en ;
  rdfs:range xsd:decimal ;
  rdfs:subPropertyOf rb:statisticalProperty .

rb:uniqueCount a rdf:Property ;
  rdfs:label "Unique count (estimated)"@en ;
  rdfs:comment "Only used for count statistics. Indicates how many unique elements are in the entire dataset. The value is estimated with a Bloom filter and is accurate to ~1%."@en ;
  rdfs:range xsd:integer ;
  rdfs:subPropertyOf rb:statisticalProperty .

rb:usesGeneralizedRdfDatasets a rdf:Property ;
  rdfs:label "Uses generalized RDF datasets"@en ;
  rdfs:comment "Whether the dataset uses the non-standard generalized datasets feature. A \"dataset\" here is used in the same meaning as in the RDF 1.1 specification."@en ;
  rdfs:seeAlso <https://www.w3.org/TR/rdf11-concepts/#section-generalized-rdf> ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf rb:conformanceProperty .

rb:usesGeneralizedTriples a rdf:Property ;
  rdfs:label "Uses generalized triples"@en ;
  rdfs:comment "Whether the dataset uses the non-standard generalized triples feature"@en ;
  rdfs:seeAlso <https://www.w3.org/TR/rdf11-concepts/#section-generalized-rdf> ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf rb:conformanceProperty .

rb:usesRdfStar a rdf:Property ;
  rdfs:label "Uses RDF-star"@en ;
  rdfs:comment "Whether the dataset uses RDF-star features."@en ;
  rdfs:seeAlso <https://www.w3.org/2021/12/rdf-star.html> ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf rb:conformanceProperty .

rb:DistributionType a rdfs:Class ;
  rdfs:label "RiverBench distribution type"@en ;
  rdfs:comment "Type of dataset distribution, indicating the corresponding streaming task formulation."@en .

rb:quadStreamDistribution a rb:DistributionType ;
  rdfs:label "Quad stream distribution"@en ;
  rdfs:comment "The dataset is distributed as a stream of RDF quads."@en .

rb:flatDistribution a rb:DistributionType ;
  rdfs:label "Flat distribution"@en ;
  rdfs:comment "The dataset is distributed as a single flat file."@en .

rb:tripleStreamDistribution a rb:DistributionType ;
  rdfs:label "Triple stream distribution"@en ;
  rdfs:comment "The dataset is distributed as a stream of RDF triples."@en .

rb:partialDistribution a rb:DistributionType ;
  rdfs:label "Partial distribution"@en ;
  rdfs:comment "A partial distribution, including only a subset of the data in the dataset. The rb:hasStreamElementCount property indicates the length of this distribution."@en .

rb:graphStreamDistribution a rb:DistributionType ;
  rdfs:label "Graph stream distribution"@en ;
  rdfs:comment "The dataset is distributed as a stream of named RDF graphs."@en .

rb:fullDistribution a rb:DistributionType ;
  rdfs:label "Full distribution"@en ;
  rdfs:comment "A full distribution, including all data in the dataset."@en .

rb:StreamElementType a rdfs:Class ;
  rdfs:label "Stream element type"@en ;
  rdfs:comment "Indicates the type of the contents of stream elements"@en .

rb:graphs a rb:StreamElementType ;
  rdfs:label "Graphs"@en ;
  rdfs:comment "Graph streams are a special case of quad streams, where each element contains exactly one named RDF graph."@en .

rb:quads a rb:StreamElementType ;
  rdfs:label "Quads"@en ;
  rdfs:comment "Quad streams consist of elements, where each element is an RDF dataset."@en .

rb:triples a rb:StreamElementType ;
  rdfs:label "Triples"@en ;
  rdfs:comment "Triple streams consist of elements, where each element is an RDF graph."@en .
