@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <http://purl.org/datajourneys/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@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#> .

<http://purl.org/datajourneys/>
    a owl:Ontology .

:Activity
    a owl:Class ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#DataOperationMotif> .

:Analysis
    a owl:Class ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#Analysis> ;
    rdfs:subClassOf :Activity .

:Capability
    a owl:Class ;
    rdfs:comment "any datanode which provides capabilities to the program, including pre-existing modules, functions, libraries" ;
    rdfs:subClassOf :Support .

:Cleaning
    a owl:Class ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#DataCleaning> ;
    rdfs:subClassOf :Activity .

:Constant
    a owl:Class ;
    rdfs:comment "Changing this does not affect the rationale of the journey. E.g.: the configuration path to the folder where to save the results." ;
    rdfs:subClassOf :Datanode .

:Datanode
    a owl:Class ;
    rdfs:seeAlso <http://purl.org/datanode/ns/Datanode> .

:Documentation
    a owl:Class ;
    rdfs:subClassOf :Support .

:Input
    a owl:Class ;
    rdfs:comment "a pre-existing data object served to the program for consumption and manipulation" ;
    rdfs:subClassOf :Datanode .

:Journey
    a owl:Class ;
    rdfs:comment """Many Journeys in 1 ontology

1 Journey (can be) 1 named graph Journey subClassOf foaf:Document

How to compare / link journeys -> by shared nodes (imports, constants)

How to compare / link datanodes -> by their Types""", "Wraps all datanodes?" .

:Movement
    a owl:Class ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#DataMovement> ;
    rdfs:subClassOf :Activity .

:Output
    a owl:Class ;
    rdfs:comment "a datanode produced by the program" ;
    rdfs:subClassOf :Datanode .

:Parameter
    a owl:Class ;
    rdfs:comment "any datanode which is not supposed to be modified by the program but is needed to tune the behaviour of the process. For example, a data source is split in 2 parts, 20% for the test set and 80\\% for the training set. 2, 20%, and 80% are all parameters." ;
    rdfs:subClassOf :Datanode .

:Preparation
    a owl:Class ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#Preparation> ;
    rdfs:subClassOf :Activity .

:Reference
    a owl:Class ;
    rdfs:comment "Any datanode used as background knowledge by the program, for example, a lookup service or a knowledge graph. Such datanode pre-exists the program and is external to the program." ;
    rdfs:subClassOf :Support .

:Retrieval
    a owl:Class ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#Retrieval> ;
    rdfs:subClassOf :Activity .

:Reuse
    a owl:Class ;
    rdfs:comment "as in python module import" ;
    rdfs:subClassOf :Activity .

:Support
    a owl:Class ;
    rdfs:comment "Also documentation/comments can be considered support", "To include objects such as libraries, functions, etc..." ;
    rdfs:subClassOf :Datanode .

:Temporary
    a owl:Class ;
    rdfs:subClassOf :Datanode .

:Visualisation
    a owl:Class ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#Visualization> ;
    rdfs:subClassOf :Activity .

:analysedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#DataAnalysis> ;
    rdfs:subPropertyOf :derivedFrom .

:augmentedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#InputAugmentation> ;
    rdfs:subPropertyOf :preparedFrom .

:cleanedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.com/datanode/ns/cleanedFrom>, <http://purl.org/net/wf-motifs#DataCleaning> ;
    rdfs:subPropertyOf :derivedFrom .

:combinedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.com/datanode/ns/combinedInto>, <http://purl.org/net/wf-motifs#Combine> ;
    rdfs:subPropertyOf :preparedFrom .

:computedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.com/datanode/ns/computedFrom> ;
    rdfs:subPropertyOf :derivedFrom .

:copiedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.com/datanode/ns/copiedFrom> ;
    rdfs:subPropertyOf :derivedFrom .

:derivedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://www.w3.org/ns/prov#wasDerivedFrom> .

:extractedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#OutputExtraction> ;
    rdfs:subPropertyOf :preparedFrom .

:filteredFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.com/datanode/ns/isSelectionof>, <http://purl.org/net/wf-motifs#Filter> ;
    rdfs:subPropertyOf :preparedFrom .

:formatTransformedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#FormatTransformation> ;
    rdfs:subPropertyOf :preparedFrom .

:groupedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#Group> ;
    rdfs:subPropertyOf :preparedFrom .

:hasActivity
    a owl:AnnotationProperty .

:inActivity
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Activity ;
    owl:inverseOf :includesDatanode .

:inJourney
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:Activity
            :Datanode
        )
    ] ;
    rdfs:range :Journey .

:includesDatanode
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode .

:movedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#DataMovement> ;
    rdfs:subPropertyOf :derivedFrom .

:optimizedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.com/datanode/ns/optimizedFrom> ;
    rdfs:subPropertyOf :derivedFrom .

:preparedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#DataPreparation> ;
    rdfs:subPropertyOf :derivedFrom .

:previous
    a owl:ObjectProperty ;
    rdfs:domain :Activity, :Datanode ;
    rdfs:range :Activity, :Datanode .

:refactoredFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.com/datanode/ns/refactoredFrom> ;
    rdfs:subPropertyOf :derivedFrom .

:remodelledFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.com/datanode/ns/remodelledFrom> ;
    rdfs:subPropertyOf :derivedFrom .

:retrievedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#DataRetrieval> ;
    rdfs:subPropertyOf :derivedFrom .

:sortedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:subPropertyOf :preparedFrom .

:splitFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:subPropertyOf :preparedFrom .

:visualisedFrom
    a owl:ObjectProperty ;
    rdfs:domain :Datanode ;
    rdfs:range :Datanode ;
    rdfs:seeAlso <http://purl.org/net/wf-motifs#DataVisualization> ;
    rdfs:subPropertyOf :derivedFrom .

[]
    a owl:AllDisjointClasses ;
    owl:members (:Analysis
        :Cleaning
        :Movement
        :Preparation
        :Retrieval
        :Reuse
        :Visualisation
    ) .

[]
    a owl:AllDisjointClasses ;
    owl:members (:Input
        :Output
        :Support
        :Temporary
    ) .

