@prefix : <https://mardi4nfdi.de/mathalgodb/0.1#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <https://mardi4nfdi.de/mathalgodb/0.1#> .

<https://mardi4nfdi.de/mathalgodb/0.1> rdf:type owl:Ontology ;
                                        owl:versionIRI <https://mardi4nfdi.de/mathalgodb/0.1> ;
                                        <http://purl.org/dc/terms/bibliographicCitation> "MaRDI Task Area 2 - Scientific Computing @ University of Münster. MathAlgoDB - Algorithm Knowledge Graph - Ontology (Version 0.1). MaRDI (Mathematical Research Data Initiative), 2022. https://mardi4nfdi.de/mathalgodb/0.1" ;
                                        <http://purl.org/dc/terms/creator> "Christian Himpe (https://orcid.org/0000-0003-2194-6754)" ,
                                                                           "Frank Wübbeling (https://orcid.org/0000-0002-2375-2008)" ,
                                                                           "Hendrik Kleikamp (https://orcid.org/0000-0003-1264-5941)" ,
                                                                           "René Fritze (https://orcid.org/0000-0002-9548-2238)" ,
                                                                           "Stephan Rave (https://orcid.org/0000-0003-0439-7212)" ;
                                        <http://purl.org/dc/terms/description> """This vocabulary and grammar defines which types of objects are admissible to the MathAlgoDB -
                        the algorithm knowledge graph - and by which properties they can relate. All in all five
                        classes, \"problem\", \"algorithm\", \"benchmark\", \"software\", \"publication\", are defined,
                        as well as a minimal but intuitively intelligible number of properties. As opposed to the more
                        liberal WikiData, MathAlgoDB relies on the strict adherence to the ontology to provide a reliable
                        machine-readable database of (numerical) algorithm knowledge.""" ;
                                        <http://purl.org/dc/terms/license> <https://creativecommons.org/licenses/by/4.0> ;
                                        <http://purl.org/dc/terms/title> "Algorithm Knowledge Graph Ontology" ;
                                        <http://purl.org/ontology/bibo/status> "Draft" ;
                                        <http://purl.org/vocab/vann/preferredNamespacePrefix> "mathalgodb" ;
                                        <http://purl.org/vocab/vann/preferredNamespaceUri> "https://mardi4nfdi.de/mathalgodb/0.1#" ;
                                        owl:versionInfo "0.1" ;
                                        <http://xmlns.com/foaf/0.1/logo> <https://workshop.mardi.ovh/images/MaRDI_Logo_S_5_rgb.svg> ;
                                        :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .

#################################################################
#    Annotation properties
#################################################################

###  http://purl.org/dc/terms/bibliographicCitation
<http://purl.org/dc/terms/bibliographicCitation> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/creator
<http://purl.org/dc/terms/creator> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/description
<http://purl.org/dc/terms/description> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/license
<http://purl.org/dc/terms/license> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/title
<http://purl.org/dc/terms/title> rdf:type owl:AnnotationProperty .


###  http://purl.org/ontology/bibo/status
<http://purl.org/ontology/bibo/status> rdf:type owl:AnnotationProperty .


###  http://purl.org/vocab/vann/preferredNamespacePrefix
<http://purl.org/vocab/vann/preferredNamespacePrefix> rdf:type owl:AnnotationProperty .


###  http://purl.org/vocab/vann/preferredNamespaceUri
<http://purl.org/vocab/vann/preferredNamespaceUri> rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2002/07/owl#cardinality
owl:cardinality rdf:type owl:AnnotationProperty .


###  http://www.w3.org/2004/02/skos/core#definition
<http://www.w3.org/2004/02/skos/core#definition> rdf:type owl:AnnotationProperty .


###  http://xmlns.com/foaf/0.1/logo
<http://xmlns.com/foaf/0.1/logo> rdf:type owl:AnnotationProperty .


#################################################################
#    Object Properties
#################################################################

###  https://mardi4nfdi.de/mathalgodb/0.1#analyzedIn
:analyzedIn rdf:type owl:ObjectProperty ;
            rdfs:domain :algorithm ;
            rdfs:range :publication ;
            rdfs:label "is analyzed in" ;
            owl:cardinality "60"^^xsd:nonNegativeInteger ;
            :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#analyzes
:analyzes rdf:type owl:ObjectProperty ;
          owl:inverseOf :analyzedIn ;
          rdfs:domain :publication ;
          rdfs:range :algorithm ;
          rdfs:label "analyzes" ;
          owl:cardinality "60"^^xsd:nonNegativeInteger ;
          :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#appliedIn
:appliedIn rdf:type owl:ObjectProperty ;
           rdfs:domain :algorithm ;
           rdfs:range :publication ;
           rdfs:label "is applied in" ;
           owl:cardinality "80"^^xsd:nonNegativeInteger ;
           :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#applies
:applies rdf:type owl:ObjectProperty ;
         owl:inverseOf :appliedIn ;
         rdfs:domain :publication ;
         rdfs:range :algorithm ;
         rdfs:label "applies" ;
         owl:cardinality "80"^^xsd:nonNegativeInteger ;
         :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#componentOf
:componentOf rdf:type owl:ObjectProperty ;
             owl:inverseOf :hasComponent ;
             rdf:type owl:TransitiveProperty ;
             rdfs:domain :algorithm ;
             rdfs:range :algorithm ;
             rdfs:label "is component of" ;
             owl:cardinality "40"^^xsd:nonNegativeInteger ;
             :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#documentedIn
:documentedIn rdf:type owl:ObjectProperty ;
              rdfs:domain :realization ;
              rdfs:range :publication ;
              rdfs:label "is documented in" ;
              owl:cardinality "120"^^xsd:nonNegativeInteger ;
              :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#documents
:documents rdf:type owl:ObjectProperty ;
           owl:inverseOf :documentedIn ;
           rdfs:domain :publication ;
           rdfs:range :realization ;
           rdfs:label "documents" ;
           owl:cardinality "120"^^xsd:nonNegativeInteger ;
           :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#hasComponent
:hasComponent rdf:type owl:ObjectProperty ,
                       owl:TransitiveProperty ;
              rdfs:domain :algorithm ;
              rdfs:range :algorithm ;
              rdfs:label "has component" ;
              owl:cardinality "40"^^xsd:nonNegativeInteger ;
              :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#hasSubclass
:hasSubclass rdf:type owl:ObjectProperty ;
             owl:inverseOf :subclassOf ;
             rdf:type owl:TransitiveProperty ;
             rdfs:domain :algorithm ;
             rdfs:range :algorithm ;
             rdfs:label "has subclass" ;
             owl:cardinality "20"^^xsd:nonNegativeInteger ;
             :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#implementedBy
:implementedBy rdf:type owl:ObjectProperty ;
               owl:inverseOf :implements ;
               rdfs:domain :algorithm ;
               rdfs:range :software ;
               rdfs:label "is implemented by" ;
               owl:cardinality "100"^^xsd:nonNegativeInteger ;
               :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#implements
:implements rdf:type owl:ObjectProperty ;
            rdfs:domain :software ;
            rdfs:range :algorithm ;
            rdfs:label "implements" ;
            owl:cardinality "100"^^xsd:nonNegativeInteger ;
            :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#instanceOf
:instanceOf rdf:type owl:ObjectProperty ;
            rdfs:domain :benchmark ;
            rdfs:range :problem ;
            rdfs:label "is instance of" ;
            owl:cardinality "100"^^xsd:nonNegativeInteger ;
            :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#instantiates
:instantiates rdf:type owl:ObjectProperty ;
              owl:inverseOf :instanceOf ;
              rdfs:domain :problem ;
              rdfs:range :benchmark ;
              rdfs:label "instantiates" ;
              owl:cardinality "100"^^xsd:nonNegativeInteger ;
              :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#inventedIn
:inventedIn rdf:type owl:ObjectProperty ;
            rdfs:domain :algorithm ;
            rdfs:range :publication ;
            rdfs:label "is invented in" ;
            owl:cardinality "50"^^xsd:nonNegativeInteger ;
            :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#invents
:invents rdf:type owl:ObjectProperty ;
         owl:inverseOf :inventedIn ;
         rdfs:domain :publication ;
         rdfs:range :algorithm ;
         rdfs:label "invents" ;
         owl:cardinality "50"^^xsd:nonNegativeInteger ;
         :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#relatedTo
:relatedTo rdf:type owl:ObjectProperty ,
                    owl:SymmetricProperty ,
                    owl:TransitiveProperty ;
           rdfs:domain :algorithm ;
           rdfs:range :algorithm ;
           rdfs:label "is related to" ;
           owl:cardinality "30"^^xsd:nonNegativeInteger ;
           :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#reviewedIn
:reviewedIn rdf:type owl:ObjectProperty ;
            rdfs:domain :algorithm ;
            rdfs:range :publication ;
            rdfs:label "is surveyed in" ;
            owl:cardinality "90"^^xsd:nonNegativeInteger ;
            :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#reviews
:reviews rdf:type owl:ObjectProperty ;
         owl:inverseOf :reviewedIn ;
         rdfs:domain :publication ;
         rdfs:range :algorithm ;
         rdfs:label "surveys" ;
         owl:cardinality "90"^^xsd:nonNegativeInteger ;
         :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#solvedBy
:solvedBy rdf:type owl:ObjectProperty ;
          owl:inverseOf :solves ;
          rdfs:domain :problem ;
          rdfs:range :algorithm ;
          rdfs:label "is solved by" ;
          owl:cardinality "10"^^xsd:nonNegativeInteger ;
          :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#solves
:solves rdf:type owl:ObjectProperty ;
        rdfs:domain :algorithm ;
        rdfs:range :problem ;
        rdfs:label "solves" ;
        owl:cardinality "10"^^xsd:nonNegativeInteger ;
        :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#specializedBy
:specializedBy rdf:type owl:ObjectProperty ;
               owl:inverseOf :specializes ;
               rdf:type owl:TransitiveProperty ;
               rdfs:domain :problem ;
               rdfs:range :problem ;
               rdfs:label "specializedBy" ;
               owl:cardinality "5"^^xsd:nonNegativeInteger ;
               :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#specializes
:specializes rdf:type owl:ObjectProperty ,
                      owl:TransitiveProperty ;
             rdfs:domain :problem ;
             rdfs:range :problem ;
             rdfs:label "specializes" ;
             owl:cardinality "5"^^xsd:nonNegativeInteger ;
             :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#studiedIn
:studiedIn rdf:type owl:ObjectProperty ;
           rdfs:domain :algorithm ;
           rdfs:range :publication ;
           rdfs:label "is studied in" ;
           owl:cardinality "70"^^xsd:nonNegativeInteger ;
           :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#studies
:studies rdf:type owl:ObjectProperty ;
         owl:inverseOf :studiedIn ;
         rdfs:domain :publication ;
         rdfs:range :algorithm ;
         rdfs:label "studies" ;
         owl:cardinality "70"^^xsd:nonNegativeInteger ;
         :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#subclassOf
:subclassOf rdf:type owl:ObjectProperty ,
                     owl:TransitiveProperty ;
            rdfs:domain :algorithm ;
            rdfs:range :algorithm ;
            rdfs:label "is subclass of" ;
            owl:cardinality "20"^^xsd:nonNegativeInteger ;
            :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#testedBy
:testedBy rdf:type owl:ObjectProperty ;
          owl:inverseOf :tests ;
          rdfs:domain :benchmark ;
          rdfs:range :software ;
          rdfs:label "is tested by" ;
          owl:cardinality "110"^^xsd:nonNegativeInteger ;
          :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#tests
:tests rdf:type owl:ObjectProperty ;
       rdfs:domain :software ;
       rdfs:range :benchmark ;
       rdfs:label "tests" ;
       owl:cardinality "110"^^xsd:nonNegativeInteger ;
       :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#usedIn
:usedIn rdf:type owl:ObjectProperty ;
        rdfs:domain :realization ;
        rdfs:range :publication ;
        rdfs:label "is used in" ;
        owl:cardinality "130"^^xsd:nonNegativeInteger ;
        :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#uses
:uses rdf:type owl:ObjectProperty ;
      owl:inverseOf :usedIn ;
      rdfs:domain :publication ;
      rdfs:range :realization ;
      rdfs:label "uses" ;
      :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


#################################################################
#    Data properties
#################################################################

###  http://purl.org/spar/datacite/hasIdentifier
<http://purl.org/spar/datacite/hasIdentifier> rdf:type owl:DatatypeProperty ;
                                              rdfs:domain :identifiable ;
                                              rdfs:range xsd:string ;
                                              rdfs:label "has identifier" ;
                                              owl:cardinality "0"^^xsd:nonNegativeInteger ;
                                              :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#category
:category rdf:type owl:DatatypeProperty ;
          rdfs:domain :all_objects ;
          rdfs:range xsd:string .


#################################################################
#    Classes
#################################################################

###  https://mardi4nfdi.de/mathalgodb/0.1#algorithm
:algorithm rdf:type owl:Class ;
           rdfs:comment "The main building blocks of the graph are algorithms." ;
           rdfs:label "Algorithm" ;
           owl:cardinality "10"^^xsd:nonNegativeInteger ;
           :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#all_objects
:all_objects rdf:type owl:Class ;
             owl:equivalentClass [ rdf:type owl:Class ;
                                   owl:unionOf ( :algorithm
                                                 :benchmark
                                                 :problem
                                                 :publication
                                                 :software
                                               )
                                 ] ;
             rdfs:label "All allgodata objects" ;
             :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#benchmark
:benchmark rdf:type owl:Class ;
           rdfs:comment "Problems for testing, evaluating and comparing numerical algorithms." ;
           rdfs:label "Benchmark" ;
           owl:cardinality "40"^^xsd:nonNegativeInteger ;
           :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#identifiable
:identifiable rdf:type owl:Class ;
              owl:equivalentClass [ rdf:type owl:Class ;
                                    owl:unionOf ( :benchmark
                                                  :publication
                                                  :software
                                                )
                                  ] ;
              rdfs:label "Identifiable" ;
              :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#problem
:problem rdf:type owl:Class ;
         rdfs:comment "A mathematical challenge that can be solved on computers." ;
         rdfs:label "Algorithmic Task" ;
         owl:cardinality "30"^^xsd:nonNegativeInteger ;
         <http://www.w3.org/2004/02/skos/core#definition> "An engineering challenge that includes a mathematical part" ;
         :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#publication
:publication rdf:type owl:Class ;
             rdfs:comment "Publications with foundations, theoretical or numerical results on the performance of algorithms" ;
             rdfs:label "Publication" ;
             owl:cardinality "100"^^xsd:nonNegativeInteger ;
             :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#realization
:realization rdf:type owl:Class ;
             owl:equivalentClass [ rdf:type owl:Class ;
                                   owl:unionOf ( :benchmark
                                                 :software
                                               )
                                 ] ;
             rdfs:label "Realization" ;
             <http://www.w3.org/2004/02/skos/core#definition> """
    Union of all MathAlgoDB-Classes that *may* have a unique identifier.
    """ ;
             :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  https://mardi4nfdi.de/mathalgodb/0.1#software
:software rdf:type owl:Class ;
          rdfs:comment "Software packages that implement algorithms in the graph." ;
          rdfs:label "Software" ;
          owl:cardinality "20"^^xsd:nonNegativeInteger ;
          :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


#################################################################
#    Annotations
#################################################################

:category rdfs:label "has category" ;
          rdf:type owl:AnnotationProperty ;
          :category <https://mardi4nfdi.de/mathalgodb/0.1/graph/ontology> .


###  Generated by the OWL API (version 5.1.18) https://github.com/owlcs/owlapi/
