All Implemented Interfaces:
Filter, IMatcher<org.apache.jena.ontology.OntModel,Alignment,Properties>, eu.sealsproject.platform.res.domain.omt.IOntologyMatchingToolBridge, eu.sealsproject.platform.res.tool.api.IPlugin, eu.sealsproject.platform.res.tool.api.IToolBridge

public class MaxWeightBipartiteExtractor extends MatcherYAAAJena implements Filter
Faster implementation than HungarianExtractor for generating a one-to-one alignment. The implementation is based on http://www.mpi-inf.mpg.de/~mehlhorn/Optimization/bipartite_weighted.ps (page 13-19).
See Also:
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • DEFAULT_MULTIPLIER

      private static final int DEFAULT_MULTIPLIER
      See Also:
  • Constructor Details

    • MaxWeightBipartiteExtractor

      public MaxWeightBipartiteExtractor()
  • Method Details

    • match

      public Alignment match(org.apache.jena.ontology.OntModel source, org.apache.jena.ontology.OntModel target, Alignment inputAlignment, Properties properties) throws Exception
      Description copied from class: MatcherYAAAJena
      Aligns two ontologies specified via a Jena OntModel, with an input alignment as Alignment object, and returns the mapping of the resulting alignment. Note: This method might be called multiple times in a row when using the evaluation framework. Make sure to return a mapping which is specific to the given inputs.
      Specified by:
      match in interface IMatcher<org.apache.jena.ontology.OntModel,Alignment,Properties>
      Specified by:
      match in class MatcherYAAAJena
      Parameters:
      source - This OntModel represents the source ontology.
      target - This OntModel represents the target ontology.
      inputAlignment - This mapping represents the input alignment.
      properties - Additional properties.
      Returns:
      The resulting alignment of the matching process.
      Throws:
      Exception - Any exception which occurs during matching.
    • filter

      public static Alignment filter(Alignment inputAlignment)
    • filter

      public static Alignment filter(Alignment inputAlignment, MwbInitHeuristic heuristic)
    • filter

      public static Alignment filter(Alignment inputAlignment, MwbInitHeuristic heuristic, int multiplier)
      Filters the alignment by computing a maximal one to one alignment. Unfortunately we need to convert the double confidences to integers (double are multiplied by multiplier). Default is to use 4 digits after decimal. For further reference see page 6 Arithmetic Demand at http://www.mpi-inf.mpg.de/~mehlhorn/Optimization/bipartite_weighted.ps.
      Parameters:
      inputAlignment - the alignment to filter.
      heuristic - the heuristic to use.
      multiplier - the multiplier to use (how many digits of confidence are used.
      Returns:
      the filtered alignment.
    • convertDoubleToInt

      private static int convertDoubleToInt(double d, int multiplier)
    • augment

      private static void augment(MwbNode a, PriorityQueue<MwbNode> PQ)
    • augmentPathTo

      private static void augmentPathTo(MwbNode v)
    • relaxAllEdges

      private static void relaxAllEdges(MwbNode a1, Stack<MwbNode> RB, PriorityQueue<MwbNode> PQ)