Description

“Dynamic API” ontology will make VIVO extendable through description of requests in RDF  through web interface.

In that ontology classes representing main entities of requests against VIVO should be defined.

The list of entities include:

  • Procedure to represent publicly available function 
    • Role to check required access
    • A procedure contains list of Step as a superclass for three kind of steps:
      • Operational step - execute an operation
        • An operation works in the aspect of data manipulation (read/write). Should be reusable by design. There are three types of operations:

          • SPARQL Query (SPARQL query to get information from triplestore)
          • Template as a superclass for all templates  (to use as an interface)
            • N3 Template
            • Optionally any other type of templates
          • Solr Query (to get data from Solr core)
        • Operations require and provide Parameters which might be linked with set of Validators to validate request parameters and results.  
          • Set of validators, parameter types and models???
      • Conditional step - controlling process flow by defining condition and two branches - true and false (which are executed depending on result of condition). True  and false branches are steps and can be any of three kind of steps.  
      • Iterative step  - repeat set of steps while some condition is not meet. 
  • There is also a set of entities for defining how a dynamic procedure should be exposed for usage:
    • The ResourceAPI entity is used to represent REST resources with it’s name, supported api versions and set of RPC of dynamic actions executed on access to the resource with different http methods or custom named actions. 
      • Custom action to define a name for custom REST actions and forward requests to an Action. 
    • RPC to represent remote procedure call with it’s access name, default http method and assigned api versions. 
      • HTTPmethod to provide predefined http methods to choose in RPC.

The prefix for the ontology is http://vivoweb.org/ontology/vitro-dynamic-api/.

The ontology

Dynamic action ontology
<?xml version="1.0"?>
<rdf:RDF xmlns="https://vivoweb.org/ontology/vitro-dynamic-api"
     xml:base="https://vivoweb.org/ontology/vitro-dynamic-api"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:xml="http://www.w3.org/XML/1998/namespace"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
    <owl:Ontology rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api"/>
    


    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Object Properties
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

    
   


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#hasOperation -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#hasOperation">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operationalStep"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operation"/>
        <rdfs:label xml:lang="en-US">has operation</rdfs:label>
    </owl:ObjectProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#hasValidator -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#hasValidator">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#parameter"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#validator"/>
        <rdfs:label xml:lang="en-US">has validator</rdfs:label>
    </owl:ObjectProperty>
    

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#firstStep -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#firstStep">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#action"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#step"/>
        <rdfs:label xml:lang="en-US">first step</rdfs:label>
    </owl:ObjectProperty>
    
    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#next -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#next">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operationalStep"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#step"/>
        <rdfs:label xml:lang="en-US">next</rdfs:label>
    </owl:ObjectProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#nextIfFalse -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#nextIfFalse">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#conditionalStep"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#step"/>
        <rdfs:label xml:lang="en-US">next step if condition fails</rdfs:label>
    </owl:ObjectProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#nextIfTrue -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#nextIfTrue">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#conditionalStep"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#step"/>
        <rdfs:label xml:lang="en-US">next step if condition is met</rdfs:label>
    </owl:ObjectProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#providesParameter -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#providesParameter">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operation"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#parameter"/>
        <rdfs:label xml:lang="en-US">provides parameter</rdfs:label>
    </owl:ObjectProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#requiresAccess -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#requiresAccess">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#action"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#role"/>
        <rdfs:label xml:lang="en-US">requires access</rdfs:label>
    </owl:ObjectProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#requiresParameter -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#requiresParameter">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operation"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#parameter"/>
        <rdfs:label xml:lang="en-US">requires parameter</rdfs:label>
    </owl:ObjectProperty>
    

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#hasQueryModel -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#hasQueryModel">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#sparqlQuery"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#model"/>
        <rdfs:label xml:lang="en-US">has query model</rdfs:label>
    </owl:ObjectProperty>


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#hasTemplateModel -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#hasTemplateModel">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#template"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#model"/>
        <rdfs:label xml:lang="en-US">has template model</rdfs:label>
    </owl:ObjectProperty>


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#hasParameterType -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#hasParameterType">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#parameter"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#parameterType"/>
        <rdfs:label xml:lang="en-US">has parameter type</rdfs:label>
    </owl:ObjectProperty>
    

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#onGet -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#onGet">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:label xml:lang="en-US">on GET</rdfs:label>
    </owl:ObjectProperty>
    

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#onPost -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#onPost">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:label xml:lang="en-US">on POST</rdfs:label>
    </owl:ObjectProperty>

    
    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#onDelete -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#onDelete">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:label xml:lang="en-US">on DELETE</rdfs:label>
    </owl:ObjectProperty>

    
    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#onPut -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#onPut">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:label xml:lang="en-US">on PUT</rdfs:label>
    </owl:ObjectProperty>
 
    
    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#onPatch -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#onPatch">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:label xml:lang="en-US">on PATCH</rdfs:label>
    </owl:ObjectProperty>


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#hasCustomAction -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#hasCustomAction">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#customAction"/>
        <rdfs:label xml:lang="en-US">has custom action</rdfs:label>
    </owl:ObjectProperty>


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#forwardTo -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#forwardTo">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#customAction"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:label xml:lang="en-US">forward to RPC</rdfs:label>
    </owl:ObjectProperty>



    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#assignedRPC -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#assignedRPC">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#action"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:label xml:lang="en-US">assigned rpc</rdfs:label>
    </owl:ObjectProperty>


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#defaultMethod -->

    <owl:ObjectProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#defaultMethod">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:range rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#httpMethod"/>
        <rdfs:label xml:lang="en-US">default http method</rdfs:label>
    </owl:ObjectProperty>
       

    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Data properties
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#hasN3Text -->

    <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#hasN3Text">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#n3Template"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">has n3 text</rdfs:label>
    </owl:DatatypeProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#sparqlQueryText -->

    <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#sparqlQueryText">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#sparqlQuery"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">sparql query text</rdfs:label>
    </owl:DatatypeProperty>

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#solrQueryText -->

    <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#solrQueryText">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#solrQuery"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">solr query text</rdfs:label>
    </owl:DatatypeProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#hasQuestion -->

    <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#hasQuestion">
        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topDataProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#conditionalStep"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">has question</rdfs:label>
    </owl:DatatypeProperty>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#isOptional -->

    <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#isOptional">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operationalStep"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
        <rdfs:label xml:lang="en-US">is optional</rdfs:label>
    </owl:DatatypeProperty>
    

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#rpcName">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">rpc name</rdfs:label>
      </owl:DatatypeProperty>


     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#modelName">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#model"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">model name</rdfs:label>
      </owl:DatatypeProperty>


     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#paramName">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#parameter"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">parameter name</rdfs:label>
      </owl:DatatypeProperty>

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#typeName">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#parameterType"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">type name</rdfs:label>
      </owl:DatatypeProperty>

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#resourceName">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">resource name</rdfs:label>
      </owl:DatatypeProperty>

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#restAPIVersionMin">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">REST API minimum version</rdfs:label>
      </owl:DatatypeProperty>

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#restAPIVersionMax">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#resource"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">REST API maximum version</rdfs:label>
      </owl:DatatypeProperty>

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#rpcAPIVersionMin">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">RPC API minimum version</rdfs:label>
      </owl:DatatypeProperty>

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#rpcAPIVersionMax">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#rpc"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">RPC API maximum version</rdfs:label>
      </owl:DatatypeProperty>

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#methodName">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#httpMethod"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">http method name</rdfs:label>
      </owl:DatatypeProperty>

     <owl:DatatypeProperty rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#customActionName">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
        <rdfs:domain rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#customAction"/>
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <rdfs:label xml:lang="en-US">custom action name</rdfs:label>
      </owl:DatatypeProperty>

    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Classes
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#action -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#action">
        <rdfs:label xml:lang="en-US">Action</rdfs:label>
    </owl:Class>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#conditionalStep -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#conditionalStep">
        <rdfs:label xml:lang="en-US">Conditional step</rdfs:label>
        <rdfs:subClassOf rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#step"/>
    </owl:Class>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#parameter -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#parameter">
        <rdfs:label xml:lang="en-US">Parameter</rdfs:label>
    </owl:Class>



    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#parameterType -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#parameterType">
        <rdfs:label xml:lang="en-US">Parameter type</rdfs:label>
    </owl:Class>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#role -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#role">
        <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
        <rdfs:label xml:lang="en-US">Role</rdfs:label>
    </owl:Class>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#sparqlQuery -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#sparqlQuery">
        <rdfs:subClassOf rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operation"/>
        <rdfs:label xml:lang="en-US">SPARQLQuery</rdfs:label>
    </owl:Class>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#solrQuery -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#solrQuery">
        <rdfs:subClassOf rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operation"/>
        <rdfs:label xml:lang="en-US">SolrQuery</rdfs:label>
    </owl:Class>
    


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#step -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#step">
        <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
        <rdfs:label xml:lang="en-US">Step</rdfs:label>
    </owl:Class>

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#operationalStep">
        <rdfs:subClassOf rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#step"/>
        <rdfs:label xml:lang="en-US">Operational step</rdfs:label>
    </owl:Class>
    

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#operation -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#operation">
        <rdfs:label xml:lang="en-US">Operation</rdfs:label>
    </owl:Class>


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#template -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#template">
        <rdfs:subClassOf rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#operation"/>
        <rdfs:label xml:lang="en-US">Template</rdfs:label>
    </owl:Class>
    

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#n3Template -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#n3Template">
        <rdfs:subClassOf rdf:resource="https://vivoweb.org/ontology/vitro-dynamic-api#template"/>
        <rdfs:label xml:lang="en-US">N3 template</rdfs:label>
    </owl:Class>


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#validator -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#validator">
        <rdfs:label xml:lang="en-US">Validator</rdfs:label>
    </owl:Class>

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#model -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#model">
        <rdfs:label xml:lang="en-US">Model</rdfs:label>
    </owl:Class>
    

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#resource -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#resource">
        <rdfs:label xml:lang="en-US">Resource</rdfs:label>
    </owl:Class>
        
    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#rpc -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#rpc">
        <rdfs:label xml:lang="en-US">RPC </rdfs:label>
    </owl:Class>


    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#httpMethod -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#httpMethod">
        <rdfs:label xml:lang="en-US">HTTP method</rdfs:label>
    </owl:Class>

    <!-- https://vivoweb.org/ontology/vitro-dynamic-api#customAction -->

    <owl:Class rdf:about="https://vivoweb.org/ontology/vitro-dynamic-api#customAction">
        <rdfs:label xml:lang="en-US">Custom action</rdfs:label>
    </owl:Class>

</rdf:RDF>



<!-- Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi -->

An Example

Example of a dynamic action
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> .
@prefix dynapi: <https://vivoweb.org/ontology/vitro-dynamic-api#> .
@prefix dynapi_java: <java:edu.cornell.mannlib.vitro.webapp.dynapi.components#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<https://vivoweb.org/ontology/vitro-dynamic-api/action/createGeolocation>
        a                        dynapi:action ;
        rdfs:label               "creation of a new geolocation"@en-US ;
        dynapi:hasAssignedRPC       <https://vivoweb.org/ontology/vitro-dynamic-api/rpc/createGeolocationRPC> ;
        dynapi:hasFirstStep         <https://vivoweb.org/ontology/vitro-dynamic-api/step/createGeolocationStep1> .

<https://vivoweb.org/ontology/vitro-dynamic-api/step/createGeolocationStep1>
        a                        dynapi:step, dynapi:operationalStep ;
        rdfs:label               "creation of a geolocation step 1"@en-US ;
        dynapi:hasOperation      <https://vivoweb.org/ontology/vitro-dynamic-api/n3Template/createGeolocationN3Template> .

<https://vivoweb.org/ontology/vitro-dynamic-api/n3Template/createGeolocationN3Template>
        a                        dynapi:operation, dynapi:n3Template ;
        rdfs:label               "create geolocation n3 Template"@en-US ;
        dynapi:hasModel           <https://vivoweb.org/ontology/vitro-dynamic-api/model/abox_assertions> ;
        dynapi:requiresParameter <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/uri>, <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/label> ;
        dynapi:n3Text            "?uri <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#GeographicLocation> .\n?uri <http://www.w3.org/2000/01/rdf-schema#label> ?label " .

<https://vivoweb.org/ontology/vitro-dynamic-api/parameter/uri>
        a                        dynapi:parameter ;
        dynapi:name              "uri" ;
        dynapi:hasType           <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/type/XSDanyURI> ;
        rdfs:label               "uri for n3 template"@en-US .


<https://vivoweb.org/ontology/vitro-dynamic-api/parameter/label>
        a                        dynapi:parameter ;
        dynapi:name              "label" ;
        dynapi:hasType           <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/type/XSDstring> ;
        rdfs:label               "label for n3 template"@en-US .

<https://vivoweb.org/ontology/vitro-dynamic-api/action/readGeolocations>
        a                                   dynapi:action ;
        rdfs:label                          "Fetching geolocations"@en-US ;
        dynapi:providesParameter            <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/geolocations> ;
        dynapi:hasAssignedRPC               <https://vivoweb.org/ontology/vitro-dynamic-api/rpc/readGeolocationsRPC> ;
        dynapi:hasFirstStep                 <https://vivoweb.org/ontology/vitro-dynamic-api/step/readGeolocationsStep1> .

<https://vivoweb.org/ontology/vitro-dynamic-api/step/readGeolocationsStep1>
        a                                   dynapi:step, dynapi:operationalStep ;
        rdfs:label                          "read geolocations step 1"@en-US ;
        dynapi:hasOperation                 <https://vivoweb.org/ontology/vitro-dynamic-api/sparqlQuery/readGeolocationsSparqlQuery> .

<https://vivoweb.org/ontology/vitro-dynamic-api/sparqlQuery/readGeolocationsSparqlQuery>
        a                                   dynapi:operation, dynapi:sparqlQuery ;
        rdfs:label                          "read geolocations sparql query 1"@en-US ;
        dynapi:hasModel                     <https://vivoweb.org/ontology/vitro-dynamic-api/model/full_union> ;
        dynapi:providesParameter            <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/geolocations> ;
        dynapi:sparqlQueryText              "SELECT ?uri ?label\nWHERE\n{\n      ?uri <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#GeographicLocation>\n       OPTIONAL { ?uri <http://www.w3.org/2000/01/rdf-schema#label> ?label } \n}" .

<https://vivoweb.org/ontology/vitro-dynamic-api/parameter/validator/LimitNumericRangeValidator>
        a                                   dynapi:validator ,
                                            dynapi_java:validators.Validator ,
                                            dynapi_java:validators.NumericRangeValidator ;
        rdfs:label                          "Test range validator for parameter 1"@en-US ;
        dynapi:minValue                     10 ;
        dynapi:maxValue                     500 .

<https://vivoweb.org/ontology/vitro-dynamic-api/parameter/geolocations>
        a                                   dynapi:parameter ;
        rdfs:label                          "geolocations"@en-US ;
        dynapi:name                         "geolocations" ;
        dynapi:description                  "List of available geolocations" ;
        dynapi:hasType                      <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/type/resultUriLabelArrayType> .

<https://vivoweb.org/ontology/vitro-dynamic-api/parameter/type/resultUriLabelArrayType>
        a                                   dynapi:parameterType ,
                                            dynapi:arrayParameterType ,
                                            dynapi_java:types.ParameterType ,
                                            dynapi_java:types.ArrayParameterType ;
        rdfs:label                          "Result (uri, label) array type"@en-US ;
        dynapi:name                         "Result (uri, label) array type" ;
        dynapi:hasElementsOfType            <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/type/uriLabelObjectType> .

<https://vivoweb.org/ontology/vitro-dynamic-api/parameter/type/uriLabelObjectType>
        a                                   dynapi:parameterType ,
                                            dynapi:objectParameterType ,
                                            dynapi_java:types.ParameterType ,
                                            dynapi_java:types.ObjectParameterType ;
        rdfs:label                          "Result (uri, label) object type"@en-US ;
        dynapi:name                         "Result (uri, label) object type" ;
        dynapi:hasInternalElement           <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/uri> ,
                                            <https://vivoweb.org/ontology/vitro-dynamic-api/parameter/label> .

<https://vivoweb.org/ontology/vitro-dynamic-api/rpc/createGeolocationRPC>
        a                        	dynapi:rpc ;
        rdfs:label 					"remote procedure call endpoint for creation of a geolocation"@en-US ;
		dynapi:name           		"remote procedure call endpoint for creation of a geolocation" ;
        dynapi:hasDefaultMethod     <https://vivoweb.org/ontology/vitro-dynamic-api/http_method/post> ;
        dynapi:minAPIVersionMin  	"1.0.0" .

<https://vivoweb.org/ontology/vitro-dynamic-api/rpc/readGeolocationsRPC>
        a                                   dynapi:rpc ;
        rdfs:label                          "remote procedure call endpoint for fetching geolocations"@en-US ;
        dynapi:name                         "remote procedure call endpoint for fetching geolocations" ;
        dynapi:hasDefaultMethod             <https://vivoweb.org/ontology/vitro-dynamic-api/http_method/get> ;
        dynapi:minAPIVersion                "1.0.0" .


<https://vivoweb.org/ontology/vitro-dynamic-api/resourceAPI/geolocation>
        a                                   dynapi:resourceAPI ;
        rdfs:label                          "geolocation resourceAPI"@en-US ;
        dynapi:name                         "geolocation" ;
        dynapi:minAPIVersion                "1.0.0" ;
        dynapi:onPost                       <https://vivoweb.org/ontology/vitro-dynamic-api/rpc/createGeolocationRPC> ;
        dynapi:onGet                        <https://vivoweb.org/ontology/vitro-dynamic-api/rpc/readGeolocationsRPC>  .
  



  • No labels