@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix amalgame: <http://purl.org/vocabularies/amalgame#> .

######## Candidate correspondence generator components:

amalgame:AncestorMatcher
    amalgame:need_secondary_inputs true ;
    rdfs:label "structure/ancestor"@en ;
    skos:definition "Generate new candidates by looking for 1 or more ancestors that have already been mapped."@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

amalgame:CompoundMatcher
    rdfs:label "label/splitted source"@en ;
    skos:definition "A label matcher matching after compound splitting the label(s) of the source concepts. Source labels are splitted using rdf_tokenize_literal/2. Warning: source label tokens are matched against complete target labels! "@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

amalgame:DescendentMatcher
    amalgame:need_secondary_inputs true ;
    rdfs:label "structure/descendent"@en ;
    skos:definition "Generate new candidates by looking for 1 or more descendents that have already been mapped."@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

amalgame:ExactLabelMatcher
    rdfs:label "label/exact"@en ;
    skos:definition "Generate new candidates based on exact matching labels of source and target concepts."@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

amalgame:IsubMatcher
    rdfs:label "label/similarity"@en ;
    skos:definition "Generate new candidates based on similar labels. The matcher is based on the 'isub' metric introduced in 'A string metric for ontology alignment' by Giorgos Stoilos, 2005."@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

amalgame:NumericDifferenceMatcher
    rdfs:label "numeric/difference"@en ;
    skos:definition "Generate new candidates based on similar numeric literals.	The score is the absolute difference of the two numeric literals compared, or infinite if these are not numbers."@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

amalgame:SelectPreLoaded
    rdfs:label "import/preloaded"@en ;
    skos:definition "Match mappings from preloaded named graph against concepts in source and target vocabularies"@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

amalgame:RelatedMatcher
    amalgame:need_secondary_inputs true ;
    rdfs:label "structure/related"@en ;
    skos:definition "Generate new candidates by looking for 1 or more related concepts that have already been mapped."@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

amalgame:SnowballMatcher
    rdfs:label "label/stemmed"@en ;
    skos:definition "Generate new candidates based on label matching after (snowball) stemming."@en ;
    rdfs:subClassOf amalgame:CandidateGenerator .

########  Mapping producing partitioners, based on the generators above:

amalgame:AncestorSelecter
    amalgame:need_secondary_inputs true ;
    rdfs:label "structure/ancestor"@en ;
    skos:definition "Select mappings with the most mapped ancestors, discard others for the same source/target. If type=all, all correspondences with one or more ancestors are selected."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:CompoundLabelSelecter
    rdfs:label "label/compound source"@en ;
    skos:definition "Select mappings with the most matching labels, discard others for the same source/target. If type=all, all candidates with matching labels are selected.  All matching is done after compound splitting the label(s) of the source concepts. Source labels are splitted using rdf_tokenize_literal/2. Warning: source label tokens are matched against complete target labels!"@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:DescendentSelecter
    amalgame:need_secondary_inputs true ;
    rdfs:label "structure/descendent"@en ;
    skos:definition "Select mappings with the most mapped descendents, discard others for the same source/target. If type=all, all correspondences with one or more descendents are selected."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:ExactLabelSelecter
    rdfs:label "label/exact"@en ;
    skos:definition "Select mappings with the most matching labels, discard others for the same source/target. If type=all, all candidates with matching labels are selected."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:IsubSelecter
    rdfs:label "label/similarity"@en ;
    skos:definition "Select mappings with the most similar labels, discard others for the same source/target.  If type=all, all candidates with sufficiently similar labels are selected. The matcher is based on the 'isub' metric introduced in 'A string metric for ontology alignment' by Giorgos Stoilos, 2005."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:NumericDifferenceSelecter
    rdfs:label "numeric/difference"@en ;
    skos:definition "Select mappings with similar numeric literals. If type=all, all candidates with sufficiently similar numbers are selected. The score is the absolute difference of the two numeric literals compared, or infinite if these are not numbers."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .
amalgame:SelectPreLoadedSelecter
    rdfs:label "import/preloaded"@en ;
    skos:definition "Select mappings with corresponding mappings in the preloaded mapping, discard others with the same source/target."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:RelatedSelecter
    amalgame:need_secondary_inputs true ;
    rdfs:label "structure/related"@en ;
    skos:definition "Select mappings with the most mapped related concepts, discard others for the same source/target. If type=all, all correspondences with one or more related concepts are selected."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:SnowballLabelSelecter
    rdfs:label "label/stemmed"@en ;
    skos:definition "Select mappings with the most matching labels after (snowball) stemming, discard others for the same source/target. If type=all, all candidates with matching labels are selected."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

########  Other mapping producing partitioners:

amalgame:AritySelect
    rdfs:label "ambiguity/remove"@en ;
    skos:definition "Select correspondences with a unique source, target or both, discard others"@en;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:Sampler
    rdfs:label "sampler"@en ;
    amalgame:materialize amalgame:always ;
    skos:definition "Component that randomly samples correspondences to create a new mapping."@en ;
    rdfs:comment "Samples are always materialized to guarantee replicability of the workflow."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:BestNumeric
    rdfs:label "best numeric score"@en ;
    skos:definition "Select correspondences that have the best score considering some numerical ranking, discard others."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:MostGeneric
    rdfs:label "most generic"@en ;
    skos:definition "Select the most generic concepts among alternatives for the same source/target, discard others."@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:MostLabels
    rdfs:label "most labels"@en ;
    skos:definition "Select correspondences that already have the most matching labels (according to their evidence data.)"@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:MostMethods
    rdfs:label "most methods"@en ;
    skos:definition "Select correspondences that have been selected by the most other methods (according to their evidence data.)"@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

amalgame:SiblingSelecter
    rdfs:label "sibling selecter"@en ;
    skos:definition "Select the siblings (if any) among alternatives for the same source/target. This is used, for example, when a single source with two labels matches on two distinct but very similar targets and both mappings need to be preserved. "@en ;
    rdfs:subClassOf amalgame:MappingPartitioner .

######## Vocabulary partitioner classes:

amalgame:VocExclude
    amalgame:need_secondary_inputs true ;
    rdfs:label "partition mapped/unmapped"@en ;
    skos:definition "Partition a vocabulary based on the concepts having already been mapped, or not."@en ;
    rdfs:subClassOf amalgame:VirtualVocabPartitioner .

amalgame:TypeSelect
    rdfs:label "partition facet on type"@en ;
    skos:definition "Partition a vocabulary based on the concepts being of a specific type, or not."@en ;
    rdfs:subClassOf amalgame:VirtualVocabPartitioner .

amalgame:PropertyValueSelect
    rdfs:label "partion facet on property/value"@en ;
    skos:definition "Partition a vocabulary based on the concepts having a specific property/value, or not."@en ;
    rdfs:subClassOf amalgame:VirtualVocabPartitioner .

amalgame:SubtreeSelect
    rdfs:label "partition facet by subtree"@en ;
    skos:definition "Partition a vocabulary based on the concepts being in the sub-tree below (using BT/NT) a common parent concept, or not."@en ;
    rdfs:subClassOf amalgame:VirtualVocabPartitioner .

amalgame:UniqLabelVocSelect
    rdfs:label "partition on unique labels"@en ;
    skos:definition "Partition a vocabulary based on the concepts being uniquely labeled, or not."@en ;
    rdfs:subClassOf amalgame:VirtualVocabPartitioner .

####################

amalgame:EvaluationProcess
    rdfs:label "Manual evaluation"@en ;
    skos:definition "A process class representing manual evaluation processes "@en ;
    rdfs:subClassOf amalgame:Process .

amalgame:MapMerger
    amalgame:need_secondary_inputs true ;
    rdfs:label "mapping merger"@en ;
    skos:definition "Merge two or more mappings into one new mapping. For example, to collect the good mappings made by different processes."@en ;
    rdfs:subClassOf amalgame:SetOperator .

amalgame:OverlapComponent
    amalgame:need_secondary_inputs true ;
    rdfs:label "overlap"@en ;
    skos:definition "Component that analyzes a set of mappings by creating intersections and differences sets"@en ;
    rdfs:subClassOf amalgame:SetOperator .

amalgame:Evaluater
    rdfs:label "evaluater"@en ;
    skos:definition "Component that analyzes correspondences in a mappings by manual evaluation"@en ;
    rdfs:subClassOf amalgame:Analyzer .