@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix hobbit: <http://w3id.org/hobbit/vocab#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

@prefix : <http://w3id.org/dice-research/orca/ontology#> .

:Benchmark a hobbit:Benchmark;
  rdfs:label "ORCA"@en;
  rdfs:comment "Benchmark for Data Web Crawlers"@en;
  hobbit:imageName "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.controller";
  hobbit:usesImage
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.ckan-node",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.data-generator",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.empty-server",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.eval-module",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.http-node",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.rdfa-gen",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.rdfa-node",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.sparql-node",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.system";
  hobbit:version "v1.0"@en;
  hobbit:hasParameter
    :seed,
    :numberOfNodes,
    :averageTriplesPerNode,
    :averageNodeGraphDegree,
    :averageRdfGraphDegree,
    :averageCrawlDelay,
    :averageDisallowedRatio,
    :dereferencingHttpNodeWeight,
    :ckanNodeWeight,
    :sparqlNodeWeight,
    :rdfaNodeWeight,
    :httpDumpNodeWeight,
    :httpDumpNodeCompressedRatio,
    :useTurtleDumps,
    :useN3Dumps,
    :useRdfXmlDumps,
    :useNtDumps,
    :graphVisualization,
    :triplesEvaluated,
    :numberOfDisallowedResources,
    :nodeSizeDeterminer;
  hobbit:measuresKPI
    :tripleCountOverTime,
    :resourceUsageOverTime,
    :truePositives,
    :macroRecall,
    :microRecall,
    :macroAverageCrawlDelayFulfillment,
    :minAverageCrawlDelayFulfillment,
    :maxAverageCrawlDelayFulfillment,
    :ratioOfRequestedDisallowedResources,
    :totalCpuUsage,
    :averageDiskUsage,
    :averageMemoryUsage,
    :runtime;
  hobbit:hasAPI <https://github.com/dice-group/ldcbench#Api> .

:ORCALemming a hobbit:Benchmark;
  rdfs:label "ORCA (Lemming)"@en;
  rdfs:comment "Benchmark for Data Web Crawlers with pre-generated Lemming datasets"@en;
  hobbit:imageName "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.lemming";
  hobbit:usesImage
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.ckan-node",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.empty-server",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.eval-module",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.http-node",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.rdfa-gen",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.rdfa-node",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.sparql-node",
    "git.project-hobbit.eu:4567/ldcbench/ldcbench/ldcbench.system";
  hobbit:version "v1.1"@en;
  hobbit:hasParameter
    :seed,
    :numberOfNodes,
    :averageTriplesPerNode,
    :averageNodeGraphDegree,
    :averageRdfGraphDegree,
    :averageCrawlDelay,
    :averageDisallowedRatio,
    :dereferencingHttpNodeWeight,
    :ckanNodeWeight,
    :sparqlNodeWeight,
    :rdfaNodeWeight,
    :httpDumpNodeWeight,
    :httpDumpNodeCompressedRatio,
    :useTurtleDumps,
    :useN3Dumps,
    :useRdfXmlDumps,
    :useNtDumps,
    :graphVisualization,
    :triplesEvaluated,
    :numberOfDisallowedResources,
    :nodeSizeDeterminer,
    :lemmingDataset;
  hobbit:measuresKPI
    :tripleCountOverTime,
    :resourceUsageOverTime,
    :truePositives,
    :macroRecall,
    :microRecall,
    :macroAverageCrawlDelayFulfillment,
    :minAverageCrawlDelayFulfillment,
    :maxAverageCrawlDelayFulfillment,
    :ratioOfRequestedDisallowedResources,
    :totalCpuUsage,
    :averageDiskUsage,
    :averageMemoryUsage,
    :runtime;
  hobbit:hasAPI <https://github.com/dice-group/ldcbench#Api> .

<https://github.com/dice-group/ldcbench#Api> a hobbit:API .


:seed a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Seed"@en;
  rdfs:comment "A seed value for initialising random number generators is used to ensure the repeatability of experiments."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:integer;
  hobbit:defaultValue "0"^^xsd:integer .

:numberOfNodes a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Number of nodes"@en;
  rdfs:comment "The number of nodes in the synthetic graph."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:integer;
  hobbit:defaultValue "10"^^xsd:integer .

:averageTriplesPerNode a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "RDF dataset size"@en;
  rdfs:comment "Average number of triples of the generated RDF graphs."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:integer;
  hobbit:defaultValue "100"^^xsd:integer .

:averageNodeGraphDegree a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Average node degree"@en;
  rdfs:comment "The average degree of the nodes in the generated graph."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:integer;
  hobbit:defaultValue "3"^^xsd:integer .

:averageRdfGraphDegree a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Average resource degree"@en;
  rdfs:comment "The average degree of the resources in the RDF graphs."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:integer;
  hobbit:defaultValue "5"^^xsd:integer .

:averageCrawlDelay a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Average crawl delay"@en;
  rdfs:comment "The crawl delay of the node's robots.txt file."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:long;
  hobbit:defaultValue "5"^^xsd:long .

:averageDisallowedRatio a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Average ratio of disallowed resources"@en;
  rdfs:comment "Proportion of resources that are generated within a node and marked as disallowed for crawling."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:double;
  hobbit:defaultValue "0.1"^^xsd:double .

:dereferencingHttpNodeWeight a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Weight of dereferencing HTTP node occurrence"@en;
  rdfs:comment "The proportion of nodes that should have this type. If above 0, at least one node of this type would exist."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:float;
  hobbit:defaultValue "1"^^xsd:float .

:ckanNodeWeight a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Weight of CKAN node occurrence"@en;
  rdfs:comment "The proportion of nodes that should have this type. If above 0, at least one node of this type would exist."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:float;
  hobbit:defaultValue "1"^^xsd:float .

:sparqlNodeWeight a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Weight of SPARQL node occurrence"@en;
  rdfs:comment "The proportion of nodes that should have this type. If above 0, at least one node of this type would exist."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:float;
  hobbit:defaultValue "1"^^xsd:float .

:rdfaNodeWeight a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Weight of RDFa node occurrence"@en;
  rdfs:comment "The proportion of nodes that should have this type. If above 0, at least one node of this type would exist."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:float;
  hobbit:defaultValue "1"^^xsd:float .

:httpDumpNodeWeight a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Weight of HTTP dump file node occurrence"@en;
  rdfs:comment "The proportion of nodes that should have this type. If above 0, at least one node of this type would exist."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:float;
  hobbit:defaultValue "1"^^xsd:float .

:httpDumpNodeCompressedRatio a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Dump file compression ratio"@en;
  rdfs:comment "Proportion of dump files that are compressed."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:float;
  hobbit:defaultValue "0.5"^^xsd:double .

:useTurtleDumps a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Use TTL dumps"@en;
  rdfs:comment "Whether HTTP dump nodes would include Turtle serialization."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:boolean;
  hobbit:defaultValue "true"^^xsd:boolean .

:useN3Dumps a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Use N3 dumps"@en;
  rdfs:comment "Whether HTTP dump nodes would include Notation3 serialization."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:boolean;
  hobbit:defaultValue "true"^^xsd:boolean .

:useRdfXmlDumps a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Use RDF/XML dumps"@en;
  rdfs:comment "Whether HTTP dump nodes would include RDF/XML serialization."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:boolean;
  hobbit:defaultValue "true"^^xsd:boolean .

:useNtDumps a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Use NT dumps"@en;
  rdfs:comment "Whether HTTP dump nodes would include N-Triples serialization."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:boolean;
  hobbit:defaultValue "true"^^xsd:boolean .

:graphVisualization a hobbit:Parameter ;
  rdfs:label "Cloud graph visualization"@en;
  rdfs:comment "Cloud graph visualization, in DOT language."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:string .

:triplesEvaluated a hobbit:Parameter, hobbit:FeatureParameter ;
  rdfs:label "Triples evaluated"@en;
  rdfs:comment "The number of triples checked during the evaluation."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:long .

:numberOfDisallowedResources a hobbit:Parameter, hobbit:FeatureParameter ;
  rdfs:label "Disallowed resources"@en;
  rdfs:comment "The number of resources disallowed with robots.txt."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:long .

:nodeSizeDeterminer a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Node size definition"@en;
  rdfs:comment "The method how the size of a single node is defined."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range :NodeSizeDeterminer;
  hobbit:defaultValue :StaticNodeSize .

:NodeSizeDeterminer a rdfs:Class .

:StaticNodeSize a :NodeSizeDeterminer;
	rdfs:label "Static node size"@en;
	rdfs:comment "Every node has the size defined by the average node size parameter."@en .

:ExponentialDistNodeSize a :NodeSizeDeterminer;
	rdfs:label "Exponential distribution-based"@en;
	rdfs:comment "The distribution of node sizes will follow an exponential distribution."@en .

:LemmingDataset a rdfs:Class .

:LemmingSWDFDataset a :LemmingDataset;
	:lemmingDatasetDirectory "lemming/swdf";
	rdfs:label "Semantic Web Dog Food"@en;
	rdfs:comment "Datasets generated based on the Semantic Web Dog Food."@en .

:lemmingDataset a hobbit:Parameter, hobbit:ConfigurableParameter;
  rdfs:label "Dataset"@en;
  rdfs:comment "The name of the Lemming dataset that is used."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range :LemmingDataset;
  hobbit:defaultValue :LemmingSWDFDataset .

:truePositives a hobbit:KPI ;
  rdfs:label "True positives"@en;
  rdfs:comment "The number of triples that were expected to be found by the crawler and returned by the crawler."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:long .

:macroRecall a hobbit:KPI ;
  rdfs:label "Macro-recall"@en;
  rdfs:comment "The average of correctly retrieved triples divided by the number of triples that were expected to be returned over all nodes."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:double .

:microRecall a hobbit:KPI ;
  rdfs:label "Micro-recall"@en;
  rdfs:comment "The number of correctly retrieved triples divided by the number of triples that were expected to be returned."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:double .

:macroAverageCrawlDelayFulfillment a hobbit:KPI ;
  rdfs:label "Macro-average of crawl delay fulfillment"@en;
  rdfs:comment "Average of average crawl delay fulfillments over all nodes."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:double .

:minAverageCrawlDelayFulfillment a hobbit:KPI ;
  rdfs:label "Minimum of crawl delay fulfillment"@en;
  rdfs:comment "Minimum of average crawl delay fulfillments over all nodes."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:double .

:maxAverageCrawlDelayFulfillment a hobbit:KPI ;
  rdfs:label "Maximum of crawl delay fulfillment"@en;
  rdfs:comment "Maximum of average crawl delay fulfillments over all nodes."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:double .

:ratioOfRequestedDisallowedResources a hobbit:KPI ;
  rdfs:label "Requested disallowed resources"@en;
  rdfs:comment "Number of requested disallowed resources divided by the total number of disallowed resources."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:double .

:runtime a hobbit:KPI ;
  rdfs:label "Runtime (in ms)"@en;
  rdfs:comment "The overall runtime of the crawler in milliseconds."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:long .

:tripleCountOverTime a hobbit:KPI ;
  rdfs:label "Triples over time"@en;
  rdfs:comment "The number of triples the crawler has stored over time."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range <http://purl.org/linked-data/cube#DataSet> .

:resourceUsageOverTime a hobbit:KPI ;
  rdfs:label "Resource usage over time"@en;
  rdfs:comment "Various resource usage of the crawler over time."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range <http://purl.org/linked-data/cube#DataSet> .

:totalCpuUsage a hobbit:KPI ;
  rdfs:label "Total CPU usage (in ms)"@en;
  rdfs:comment "The sum of the overall CPU usage in ms."@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:long .

:averageDiskUsage a hobbit:KPI ;
  rdfs:label "Average file system usage (in bytes)."@en;
  rdfs:comment ""@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:long .

:averageMemoryUsage a hobbit:KPI ;
  rdfs:label "Average memory usage (in bytes)."@en;
  rdfs:comment ""@en;
  rdfs:domain hobbit:Experiment, hobbit:Challenge;
  rdfs:range xsd:long .