PREFIX mathalgodb: <https://mardi4nfdi.de/mathalgodb/0.1#>
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#>

mathalgodb:identifiable a rdfs:Class ;
  rdfs:label "Identifiable" .

<http://purl.org/spar/datacite/hasIdentifier> a rdf:Property ;
  rdfs:label "has identifier" ;
  rdfs:domain mathalgodb:identifiable ;
  rdfs:range xsd:string .

mathalgodb:all_objects a rdfs:Class ;
  rdfs:label "All allgodata objects" .

mathalgodb:category a rdf:Property ;
  rdfs:label "has category" ;
  rdfs:domain mathalgodb:all_objects ;
  rdfs:range xsd:string .

mathalgodb:problem a rdfs:Class ;
  rdfs:label "Algorithmic Task" ;
  rdfs:comment "An engineering challenge that includes a mathematical part" ;
  rdfs:subClassOf mathalgodb:all_objects .

mathalgodb:specializedBy a rdf:Property ;
  rdfs:label "specializedBy" ;
  rdfs:domain mathalgodb:problem ;
  rdfs:range mathalgodb:problem .

mathalgodb:solvedBy a rdf:Property ;
  rdfs:label "is solved by" ;
  rdfs:domain mathalgodb:problem ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:specializes a rdf:Property ;
  rdfs:label "specializes" ;
  rdfs:domain mathalgodb:problem ;
  rdfs:range mathalgodb:problem .

mathalgodb:instantiates a rdf:Property ;
  rdfs:label "instantiates" ;
  rdfs:domain mathalgodb:problem ;
  rdfs:range mathalgodb:benchmark .

mathalgodb:realization a rdfs:Class ;
  rdfs:label "Realization" ;
  rdfs:comment """
    Union of all MathAlgoDB-Classes that *may* have a unique identifier.
    """ .

mathalgodb:usedIn a rdf:Property ;
  rdfs:label "is used in" ;
  rdfs:domain mathalgodb:realization ;
  rdfs:range mathalgodb:publication .

mathalgodb:documentedIn a rdf:Property ;
  rdfs:label "is documented in" ;
  rdfs:domain mathalgodb:realization ;
  rdfs:range mathalgodb:publication .

mathalgodb:algorithm a rdfs:Class ;
  rdfs:label "Algorithm" ;
  rdfs:comment "The main building blocks of the graph are algorithms." ;
  rdfs:subClassOf mathalgodb:all_objects .

mathalgodb:subclassOf a rdf:Property ;
  rdfs:label "is subclass of" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:studiedIn a rdf:Property ;
  rdfs:label "is studied in" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:publication .

mathalgodb:inventedIn a rdf:Property ;
  rdfs:label "is invented in" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:publication .

mathalgodb:appliedIn a rdf:Property ;
  rdfs:label "is applied in" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:publication .

mathalgodb:componentOf a rdf:Property ;
  rdfs:label "is component of" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:analyzedIn a rdf:Property ;
  rdfs:label "is analyzed in" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:publication .

mathalgodb:solves a rdf:Property ;
  rdfs:label "solves" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:problem .

mathalgodb:hasComponent a rdf:Property ;
  rdfs:label "has component" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:reviewedIn a rdf:Property ;
  rdfs:label "is surveyed in" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:publication .

mathalgodb:relatedTo a rdf:Property ;
  rdfs:label "is related to" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:hasSubclass a rdf:Property ;
  rdfs:label "has subclass" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:implementedBy a rdf:Property ;
  rdfs:label "is implemented by" ;
  rdfs:domain mathalgodb:algorithm ;
  rdfs:range mathalgodb:software .

mathalgodb:software a rdfs:Class ;
  rdfs:label "Software" ;
  rdfs:comment "Software packages that implement algorithms in the graph." ;
  rdfs:subClassOf mathalgodb:all_objects , mathalgodb:identifiable , mathalgodb:realization .

mathalgodb:tests a rdf:Property ;
  rdfs:label "tests" ;
  rdfs:domain mathalgodb:software ;
  rdfs:range mathalgodb:benchmark .

mathalgodb:implements a rdf:Property ;
  rdfs:label "implements" ;
  rdfs:domain mathalgodb:software ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:publication a rdfs:Class ;
  rdfs:label "Publication" ;
  rdfs:comment "Publications with foundations, theoretical or numerical results on the performance of algorithms" ;
  rdfs:subClassOf mathalgodb:all_objects , mathalgodb:identifiable .

mathalgodb:uses a rdf:Property ;
  rdfs:label "uses" ;
  rdfs:domain mathalgodb:publication ;
  rdfs:range mathalgodb:realization .

mathalgodb:studies a rdf:Property ;
  rdfs:label "studies" ;
  rdfs:domain mathalgodb:publication ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:applies a rdf:Property ;
  rdfs:label "applies" ;
  rdfs:domain mathalgodb:publication ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:invents a rdf:Property ;
  rdfs:label "invents" ;
  rdfs:domain mathalgodb:publication ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:reviews a rdf:Property ;
  rdfs:label "surveys" ;
  rdfs:domain mathalgodb:publication ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:analyzes a rdf:Property ;
  rdfs:label "analyzes" ;
  rdfs:domain mathalgodb:publication ;
  rdfs:range mathalgodb:algorithm .

mathalgodb:documents a rdf:Property ;
  rdfs:label "documents" ;
  rdfs:domain mathalgodb:publication ;
  rdfs:range mathalgodb:realization .

mathalgodb:benchmark a rdfs:Class ;
  rdfs:label "Benchmark" ;
  rdfs:comment "Problems for testing, evaluating and comparing numerical algorithms." ;
  rdfs:subClassOf mathalgodb:all_objects , mathalgodb:identifiable , mathalgodb:realization .

mathalgodb:instanceOf a rdf:Property ;
  rdfs:label "is instance of" ;
  rdfs:domain mathalgodb:benchmark ;
  rdfs:range mathalgodb:problem .

mathalgodb:testedBy a rdf:Property ;
  rdfs:label "is tested by" ;
  rdfs:domain mathalgodb:benchmark ;
  rdfs:range mathalgodb:software .
