private void generateTriplesForRow( Row row, Set<String> existingTopRowTriples, Set<String> predicatesCovered, Map<String, ReportMessage> predicatesFailed) { Map<String, Node> rowNodes = row.getNodesMap(); for (String hNodeId : rowNodes.keySet()) { Node rowNode = rowNodes.get(hNodeId); if (rowNode.hasNestedTable()) { Table rowNodeTable = rowNode.getNestedTable(); if (rowNodeTable != null) { for (Row nestedTableRow : rowNodeTable.getRows(0, rowNodeTable.getNumRows())) { Set<String> rowPredicatesCovered = new HashSet<String>(); generateTriplesForRow( nestedTableRow, existingTopRowTriples, rowPredicatesCovered, predicatesFailed); } } } else { generateTriplesForCell( rowNode, existingTopRowTriples, hNodeId, predicatesCovered, predicatesFailed); } } }