예제 #1
0
  /**
   * Extract triplesMap contents.
   *
   * @param triplesMap
   * @param r2rmlMappingGraph
   * @param triplesMapSubject
   * @param triplesMapResources
   * @param storedTriplesMaps
   * @throws InvalidR2RMLStructureException
   * @throws InvalidR2RMLSyntaxException
   * @throws R2RMLDataError
   */
  private static void extractTriplesMap(
      SesameDataSet r2rmlMappingGraph,
      Resource triplesMapSubject,
      Map<Resource, TriplesMap> triplesMapResources)
      throws InvalidR2RMLStructureException, InvalidR2RMLSyntaxException, R2RMLDataError {

    if (log.isDebugEnabled()) {
      log.debug(
          "[RMLMappingFactory:extractTriplesMap] Extract TriplesMap subject : "
              + triplesMapSubject.stringValue());
    }

    TriplesMap result = triplesMapResources.get(triplesMapSubject);

    // Extract TriplesMap properties
    // MVS: create LogicalSource
    LogicalSource logicalSource = extractLogicalSource(r2rmlMappingGraph, triplesMapSubject);

    // Extract subject
    // Create a graph maps storage to save all met graph uri during parsing.
    Set<GraphMap> graphMaps = new HashSet<GraphMap>();
    // log.debug("[RMLMappingFactory:extractTriplesMap] Current number of created graphMaps : "
    //        + graphMaps.size());
    SubjectMap subjectMap =
        extractSubjectMap(r2rmlMappingGraph, triplesMapSubject, graphMaps, result);
    // log.debug("[RMLMappingFactory:extractTriplesMap] Current number of created graphMaps : "
    //        + graphMaps.size());
    // Extract predicate-object maps
    Set<PredicateObjectMap> predicateObjectMaps =
        extractPredicateObjectMaps(
            r2rmlMappingGraph, triplesMapSubject, graphMaps, result, triplesMapResources);
    log.debug(
        "[RMLMappingFactory:extractTriplesMap] Current number of created graphMaps : "
            + graphMaps.size());
    // Fill triplesMap
    for (PredicateObjectMap predicateObjectMap : predicateObjectMaps) {
      result.addPredicateObjectMap(predicateObjectMap);
    }
    result.setLogicalSource(logicalSource);
    result.setSubjectMap(subjectMap);
    log.debug(
        "[RMLMappingFactory:extractTriplesMap] Extract of TriplesMap subject : "
            + triplesMapSubject.stringValue()
            + " done.");
  }