/******************************************************************************* * Copyright (c) 2004, 2007 IBM Corporation and Cambridge Semantics Incorporated. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * File: $Source: /cvsroot/slrp/boca/com.ibm.adtech.boca.common/src/com/ibm/adtech/boca/rdb/graph/Attic/FindInferred.java,v $ * Created by: Matthew Roy ( <a href="mailto:mroy@us.ibm.com">mroy@us.ibm.com </a>) * Created on: Feb 8, 2007 * Revision: $Id: FindInferred.java 229 2007-08-07 15:22:00Z mroy $ * * Contributors: * IBM Corporation - initial API and implementation * Cambridge Semantics Incorporated - Fork to Anzo *******************************************************************************/ package org.openanzo.jdbc.container.query; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.openanzo.exceptions.AnzoException; import org.openanzo.exceptions.ExceptionConstants; import org.openanzo.exceptions.LogUtils; import org.openanzo.glitter.exception.UnknownGraphException; import org.openanzo.jdbc.container.RDBQuadStore; import org.openanzo.jdbc.container.query.ExtraSQL.SelectQuadResult; import org.openanzo.jdbc.container.sql.BaseSQL; import org.openanzo.jdbc.container.sql.GlitterSQL; import org.openanzo.jdbc.container.sql.GlitterSQL.SelectAllResult; import org.openanzo.jdbc.container.sql.GlitterSQL.SelectOResult; import org.openanzo.jdbc.container.sql.GlitterSQL.SelectPResult; import org.openanzo.jdbc.container.sql.GlitterSQL.SelectSResult; import org.openanzo.jdbc.layout.Quad; import org.openanzo.jdbc.query.SQLQueryConstants; import org.openanzo.jdbc.utils.ClosableIterator; import org.openanzo.jdbc.utils.RdbException; import org.openanzo.rdf.Resource; import org.openanzo.rdf.URI; import org.openanzo.rdf.Value; import org.openanzo.rdf.Constants.GRAPHS; import org.openanzo.rdf.Constants.NAMESPACES; import org.openanzo.rdf.utils.StatementUtils; import org.openanzo.rdf.utils.UriGenerator; import org.openanzo.rdf.vocabulary.RDF; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Set of find operations for both regular finds, as well as find with inferred results. * * @author Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com </a>) * */ public class FindInferred { private static final Logger log = LoggerFactory.getLogger(FindInferred.class); /** * Find all statements in container that match the provided parameters including inferred statements * * @param container * source of data * @param subj * Subject resource to match, or wildcard if null * @param prop * Predicate uri to match, or wildcard if null * @param obj * Object value to match, or wildcard if null * @param contexts * Context values to match, or wildcard if null * @param ontology * URI of ontology that contains inferred property and object definitions * @return Iterable set of quads containing results of find operation * @throws AnzoException * if there was an error finding statements */ public static Iterable<Quad> findStatementsInferred(RDBQuadStore container, Resource subj, URI prop, Value obj, Resource[] contexts, Resource ontology) throws AnzoException { //try { Long namedGraphId = null; String graphTable = null; int metadataGraph = -1; if (contexts != null && contexts.length == 1) { Resource context = (Resource) StatementUtils.convertUriToAny(contexts[0]); if (context != null) { namedGraphId = container.getNodeLayout().fetchId(context, container.getConnection()); if (namedGraphId == null) { return Collections.<Quad> emptySet(); // required node is not even in db } metadataGraph = context.toString().startsWith(NAMESPACES.METADATAGRAPH_PREFIX) ? 1 : 0; } } else { HashSet<Value> set = new HashSet<Value>(); boolean includeAllNamedGraphs = false, includeAllMetadataGraphs = false; Map<Value, Long> graphIds = null; if (contexts != null && contexts.length > 0) { for (Resource context : contexts) { if (context.equals(GRAPHS.ALL_GRAPHS)) includeAllNamedGraphs = includeAllMetadataGraphs = true; else if (context.equals(GRAPHS.ALL_NAMEDGRAPHS)) includeAllNamedGraphs = true; else if (context.equals(GRAPHS.ALL_METADATAGRAPHS)) includeAllMetadataGraphs = true; else set.add(context); } if (set.size() > 0) { graphIds = container.getNodeLayout().resolveStoredNodes(set, false, container.getConnection(), -1); if (graphIds.size() < set.size()) { set.removeAll(graphIds.keySet()); log.debug(LogUtils.DATASOURCE_MARKER, "findStatementsInferred", new UnknownGraphException(StringUtils.join(set.iterator(), ", "))); if (graphIds.size() == 0 && !includeAllNamedGraphs && !includeAllMetadataGraphs) { return Collections.<Quad> emptyList();// required node is not even in db } } if (graphIds.size() > 0) { graphTable = SQLQueryConstants.defaultGraphsTempTable; //container.populateValidGraphs(graphIds, includeAllNamedGraphs, includeAllMetadataGraphs, graphTable); //container.populateValidGraphs(graphIds, includeAllNamedGraphs, graphTable); } } else if (includeAllNamedGraphs || includeAllMetadataGraphs) { metadataGraph = includeAllNamedGraphs ? (includeAllMetadataGraphs ? -1 : 0) : 1; } } } return findStatementsInferred(container, subj, prop, obj, namedGraphId, metadataGraph, graphTable, ontology); /*} catch (SQLException e) { throw new AnzoException(ExceptionConstants.ERROR_TAGS.CORE_ERROR | ExceptionConstants.ERROR_TAGS.RDB_ERROR, ExceptionConstants.CLIENT.FAILED_CONTAINER_FIND_STATEMENTS, e); }*/ } /** * Find statements in container that match pattern. Include inferred statements. <li>If graphTable is not null, queries are joined against temporary table * containing valid graphs for this query</li> <li>Else if the namedGraphId is not null, then queries go against only statements that have the specific * namedGraphId</li> <li>Finally, if both the graphTable and namedGraphId are null, query either queries all graphs if metadataGraph==-1, namedGraphs if * metadataGraph==0, or metadataGraphs if metadataGraph==1 * * @param container * source of data * @param subj * Subject resource to match, or wildcard if null * @param prop * Predicate uri to match, or wildcard if null * @param obj * Object value to match, or wildcard if null * @param namedGraphId * id of namedGraph to query * @param metadataGraph * if both the graphTable and namedGraphId are null, query either queries all graphs if metadataGraph==-1, namedGraphs if metadataGraph==0, or * metadataGraphs if metadataGraph==1 * @param graphTable * temporary table containing valid graphs for this query * * @param ontology * URI of ontology that contains inferred property and object definitionss * @return Iterable set of quads containing results of find operation * @throws AnzoException * if there was an error finding statements */ public static Iterable<Quad> findStatementsInferred(RDBQuadStore container, Resource subj, URI prop, Value obj, Long namedGraphId, int metadataGraph, String graphTable, Resource ontology) throws AnzoException { try { ArrayList<Quad> list = new ArrayList<Quad>(); HashSet<Long> ids = new HashSet<Long>(); try { subj = (Resource) StatementUtils.convertUriToAny(subj); prop = (URI) StatementUtils.convertUriToAny(prop); obj = StatementUtils.convertUriToAny(obj); boolean isRdfType = false; int type = 0; Long subjId = null; Long predId = null; Long objId = null; Long ontId = null; if (subj != null) { subjId = container.getNodeLayout().fetchId(subj, container.getConnection()); if (subjId == null) { return Collections.<Quad> emptyList(); // required node is not even in db } } else { // subjId = null;//Long.valueOf(-1); } if (prop != null) { isRdfType = prop.equals(RDF.TYPE); predId = container.getNodeLayout().fetchId(prop, container.getConnection()); if (predId == null) { return Collections.<Quad> emptyList(); // required node is not even in db } } else { // predId = null;//Long.valueOf(-1); } if (obj != null) { objId = container.getNodeLayout().fetchId(obj, container.getConnection()); if (objId == null) { return Collections.<Quad> emptyList(); // required node is not even in db } } else { //objId = null;// Long.valueOf(-1); } //FIXME:SHOULD A null ontology throw an exception if (ontology != null) { ontId = container.getNodeLayout().fetchId(ontology, container.getConnection()); if (ontId == null) { return Collections.<Quad> emptyList(); // required node is not even in db } } else { ontId = Long.valueOf(-1); } GlitterSQL.insertQueryStatement(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, predId, objId, container.getConfiguration().getSessionPrefix()); if (namedGraphId != null || graphTable != null) type |= 1; if (subjId != null) type |= 2; if (predId != null) type |= 4; if (objId != null) type |= 8; switch (type) { case 0: { int count = GlitterSQL.insert0(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); if (count > 0) { ClosableIterator<SelectSResult> results = GlitterSQL.selectS(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getConfiguration().getUniqueTempName("STMT_TMP", 2), container.getConfiguration() .getUniqueTempName("STMT_TMP", 3)); try { parseResultsS(container, results, list, ids); } finally { results.close(); } } } break; case 1: { int count = 0; if (graphTable == null) { count = GlitterSQL.insert1(container.getStmtProvider(), container.getConnection(), namedGraphId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { count = GlitterSQL.insert1M(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } if (count > 0) { ClosableIterator<SelectSResult> results = GlitterSQL.selectS(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getConfiguration().getUniqueTempName("STMT_TMP", 2), container.getConfiguration() .getUniqueTempName("STMT_TMP", 3)); try { parseResultsS(container, results, list, ids); } finally { results.close(); } } } break; case 2: { int count = 0; if (metadataGraph == -1) { count = GlitterSQL.insert2(container.getStmtProvider(), container.getConnection(), subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { count = GlitterSQL.insert2META(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } if (count > 0) { ClosableIterator<SelectSResult> results = GlitterSQL.selectS(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getConfiguration().getUniqueTempName("STMT_TMP", 2), container.getConfiguration() .getUniqueTempName("STMT_TMP", 3)); try { parseResultsS(container, results, list, ids); } finally { results.close(); } } } break; case 3: { int count = 0; if (graphTable == null) { count = GlitterSQL.insert3(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { count = GlitterSQL.insert3M(container.getStmtProvider(), container.getConnection(), subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } if (count > 0) { if (container.getConfiguration().getSupportsWithClause()) { GlitterSQL.preparePropInfer_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { int counter = GlitterSQL.preparePropInfer_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { // oCount += counter; counter = GlitterSQL.preparePropInfer_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } ClosableIterator<SelectSResult> results = GlitterSQL.selectS(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getConfiguration().getUniqueTempName("STMT_TMP", 2), container.getConfiguration() .getUniqueTempName("STMT_TMP", 3)); try { parseResultsS(container, results, list, ids); } finally { results.close(); } } } break; case 4: { int count = 0; if (metadataGraph == -1) { count = GlitterSQL.insert4(container.getStmtProvider(), container.getConnection(), predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { count = GlitterSQL.insert4META(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { oCount = GlitterSQL.preparePropInferP_0(container.getStmtProvider(), container.getConnection(), ontId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { int counter = GlitterSQL.preparePropInferP_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.preparePropInferP_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (metadataGraph == -1) { count += GlitterSQL.insertFindP(container.getStmtProvider(), container.getConnection(), predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { count += GlitterSQL.insertFindPMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } if (count > 0) { int iCount = 0; if (container.getConfiguration().getSupportsWithClause()) { iCount = GlitterSQL.preparePropInferP_0(container.getStmtProvider(), container.getConnection(), ontId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } else { int counter = GlitterSQL.preparePropInferP_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { iCount += counter; counter = GlitterSQL.preparePropInferP_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } } if (iCount > 0) { count += GlitterSQL.insertFindP(container.getStmtProvider(), container.getConnection(), predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } ClosableIterator<SelectPResult> results = GlitterSQL.selectP(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getContainerName()); try { parseResultsP(container, results, list, ids); } finally { results.close(); } } } break; case 5: { int count = 0; if (graphTable == null) { count = GlitterSQL.insert5(container.getStmtProvider(), container.getConnection(), namedGraphId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { if (metadataGraph == -1) { count = GlitterSQL.insert5M(container.getStmtProvider(), container.getConnection(), predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } else { count = GlitterSQL.insert5MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { oCount = GlitterSQL.preparePropInferP_0(container.getStmtProvider(), container.getConnection(), ontId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { int counter = GlitterSQL.preparePropInferP_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.preparePropInferP_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (oCount > 0) { if (graphTable != null) { if (metadataGraph == -1) { count += GlitterSQL.insertFindMP(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), graphTable); } else { count += GlitterSQL.insertFindMPMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), graphTable); } } else { count += GlitterSQL.insertFindNP(container.getStmtProvider(), container.getConnection(), namedGraphId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } } if (count > 0) { ClosableIterator<SelectPResult> results = GlitterSQL.selectP(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getContainerName()); try { parseResultsP(container, results, list, ids); } finally { results.close(); } } } break; case 6: { int count = 0; if (metadataGraph == -1) { count = GlitterSQL.insert6(container.getStmtProvider(), container.getConnection(), subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { count = GlitterSQL.insert6META(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } if (metadataGraph == -1) { count += GlitterSQL.insertFindSP(container.getStmtProvider(), container.getConnection(), subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { count += GlitterSQL.insertFindSPMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } if (count > 0) { ClosableIterator<SelectPResult> results = GlitterSQL.selectP(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getContainerName()); try { parseResultsP(container, results, list, ids); } finally { results.close(); } } } break; case 7: { int count = 0; if (graphTable == null) { count = GlitterSQL.insert7(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { if (metadataGraph == -1) { count = GlitterSQL.insert7M(container.getStmtProvider(), container.getConnection(), subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } else { count = GlitterSQL.insert7MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } } if (graphTable != null) { count += GlitterSQL.insertFindMSP(container.getStmtProvider(), container.getConnection(), subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), graphTable); } else { count += GlitterSQL.insertFindNSP(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } if (count > 0) { ClosableIterator<SelectPResult> results = GlitterSQL.selectP(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getContainerName()); try { parseResultsP(container, results, list, ids); } finally { results.close(); } } } break; case 8: { int count = 0; if (metadataGraph == -1) { count = GlitterSQL.insert8(container.getStmtProvider(), container.getConnection(), objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { count = GlitterSQL.insert8META(container.getStmtProvider(), container.getConnection(), metadataGraph, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { if (metadataGraph == -1) { oCount = GlitterSQL.prepareObjectInferO_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); //oCount += GlitterSQL.prepareObjectInferO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } else { oCount = GlitterSQL.prepareObjectInferO_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); //oCount += GlitterSQL.prepareObjectInferO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } GlitterSQL.preparePropInfer_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { int counter = GlitterSQL.prepareObjectInferO_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferO_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } // counter = GlitterSQL.prepareObjectInferO_1_NO_WITH_0(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); // while (counter > 0) { // oCount += counter; // counter = GlitterSQL.prepareObjectInferO_1_NO_WITH_1(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); // } // counter = GlitterSQL.preparePropInfer_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.preparePropInfer_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (oCount > 0) { if (metadataGraph == -1) { count += GlitterSQL.insertFindO(container.getStmtProvider(), container.getConnection(), objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } else { count += GlitterSQL.insertFindOMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } } if (count > 0) { ClosableIterator<SelectOResult> results = GlitterSQL.selectO(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); try { parseResultsO(container, results, list, ids); } finally { results.close(); } } else { ClosableIterator<SelectAllResult> results = GlitterSQL.selectAll(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0)); try { parseResults(container, results, list, ids); } finally { results.close(); } } } break; case 9: { int count = 0; if (graphTable == null) { count = GlitterSQL.insert9(container.getStmtProvider(), container.getConnection(), namedGraphId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { if (metadataGraph == -1) { count = GlitterSQL.insert9M(container.getStmtProvider(), container.getConnection(), objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } else { count = GlitterSQL.insert9MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { oCount = GlitterSQL.prepareObjectInferO_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); //oCount += GlitterSQL.prepareObjectInferO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); GlitterSQL.preparePropInfer_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { int counter = GlitterSQL.prepareObjectInferO_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferO_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } /*counter = GlitterSQL.prepareObjectInferO_1_NO_WITH_0(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferO_1_NO_WITH_1(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } */ counter = GlitterSQL.preparePropInfer_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { //oCount += counter; counter = GlitterSQL.preparePropInfer_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (oCount > 0) { if (graphTable != null) { if (metadataGraph == -1) { count += GlitterSQL.insertFindMO(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName(), graphTable); } else { count += GlitterSQL.insertFindMOMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName(), graphTable); } } else { count += GlitterSQL.insertFindNO(container.getStmtProvider(), container.getConnection(), namedGraphId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } } if (count > 0) { ClosableIterator<SelectOResult> results = GlitterSQL.selectO(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); try { parseResultsO(container, results, list, ids); } finally { results.close(); } } } break; case 10: { int count = 0; if (metadataGraph == -1) { count = GlitterSQL.insert10(container.getStmtProvider(), container.getConnection(), subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { GlitterSQL.insert10META(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { oCount = GlitterSQL.prepareObjectInferO_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); //oCount += GlitterSQL.prepareObjectInferO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); GlitterSQL.preparePropInfer_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { int counter = GlitterSQL.prepareObjectInferO_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferO_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } /*counter = GlitterSQL.prepareObjectInferO_1_NO_WITH_0(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferO_1_NO_WITH_1(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } */ counter = GlitterSQL.preparePropInfer_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { // oCount += counter; counter = GlitterSQL.preparePropInfer_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } if (oCount > 0) { if (metadataGraph == -1) { count += GlitterSQL.insertFindSO(container.getStmtProvider(), container.getConnection(), subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } else { count += GlitterSQL.insertFindSOMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } } } if (count > 0) { ClosableIterator<SelectOResult> results = GlitterSQL.selectO(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), "PROP_INFER_TEMP", container.getContainerName()); try { parseResultsO(container, results, list, ids); } finally { results.close(); } } } break; case 11: { int count = 0; if (graphTable == null) { count = GlitterSQL.insert11(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { if (metadataGraph == -1) { count = GlitterSQL.insert11M(container.getStmtProvider(), container.getConnection(), subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } else { count = GlitterSQL.insert11MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { oCount = GlitterSQL.prepareObjectInferO_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); //oCount += GlitterSQL.prepareObjectInferO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); GlitterSQL.preparePropInfer_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { int counter = GlitterSQL.prepareObjectInferO_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferO_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } /*counter = GlitterSQL.prepareObjectInferO_1_NO_WITH_0(container.getPreparedStatementProvider(),container.getConnection(), ontId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferO_1_NO_WITH_1(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); }*/ counter = GlitterSQL.preparePropInfer_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { // oCount += counter; counter = GlitterSQL.preparePropInfer_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (oCount > 0) { if (graphTable != null) { if (metadataGraph == -1) { count += GlitterSQL.insertFindMSO(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName(), graphTable); } else { count += GlitterSQL.insertFindMSOMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName(), graphTable); } } else { count += GlitterSQL.insertFindNSO(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } } if (count > 0) { ClosableIterator<SelectOResult> results = GlitterSQL.selectO(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("STMT_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); try { parseResultsO(container, results, list, ids); } finally { results.close(); } } } break; case 12: { int count = 0; if (metadataGraph == -1) { count = GlitterSQL.insert12(container.getStmtProvider(), container.getConnection(), predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { count = GlitterSQL.insert12META(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { if (isRdfType) { oCount = GlitterSQL.prepareObjectInferPO_0(container.getStmtProvider(), container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); // oCount += GlitterSQL.prepareObjectInferPO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } oCount += GlitterSQL.preparePropInfer_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { if (isRdfType) { int counter = GlitterSQL.prepareObjectInferPO_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferPO_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } /*counter = GlitterSQL.prepareObjectInferPO_1_NO_WITH_0(container.getPreparedStatementProvider(),container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferPO_1_NO_WITH_1(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); }*/ } int counter = GlitterSQL.preparePropInfer_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.preparePropInfer_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (oCount > 0) { if (metadataGraph == -1) { if (isRdfType) { count += GlitterSQL.insertFindPO_O(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } count += GlitterSQL.insertFindPO_P(container.getStmtProvider(), container.getConnection(), objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { if (isRdfType) { count += GlitterSQL.insertFindPO_OMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } count += GlitterSQL.insertFindPO_PMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } } if (count > 0) { ClosableIterator<SelectAllResult> results = GlitterSQL.selectAll(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0)); try { parseResults(container, results, list, ids); } finally { results.close(); } } } break; case 13: { int count = 0; if (graphTable == null) { count = GlitterSQL.insert13(container.getStmtProvider(), container.getConnection(), namedGraphId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { if (metadataGraph == -1) { count = GlitterSQL.insert13M(container.getStmtProvider(), container.getConnection(), predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } else { count = GlitterSQL.insert13MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { if (isRdfType) { oCount = GlitterSQL.prepareObjectInferPO_0(container.getStmtProvider(), container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); //oCount += GlitterSQL.prepareObjectInferPO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } oCount += GlitterSQL.preparePropInferP_0(container.getStmtProvider(), container.getConnection(), ontId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { if (isRdfType) { int counter = GlitterSQL.prepareObjectInferPO_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferPO_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } // counter = GlitterSQL.prepareObjectInferPO_1_NO_WITH_0(container.getPreparedStatementProvider(),container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); // while (counter > 0) { // oCount += counter; // counter = GlitterSQL.prepareObjectInferPO_1_NO_WITH_1(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); // } } int counter = GlitterSQL.preparePropInferP_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.preparePropInferP_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (oCount > 0) { /*ClosableIterator<SelectInferedInferenceResult> results=GlitterSQL.selectInferedInference(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); for(SelectInferedInferenceResult result:results ) { System.err.println("<"+result.getProp()+"> <"+result.getObj()+"> <"+result.getObjInfer()+">"); } results.close();*/ if (graphTable != null) { if (metadataGraph == -1) { if (isRdfType) { count += GlitterSQL.insertFindMPO_O(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName(), graphTable); } count += GlitterSQL.insertFindMPO_P(container.getStmtProvider(), container.getConnection(), objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), graphTable); } else { if (isRdfType) { count += GlitterSQL.insertFindMPO_OMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName(), graphTable); } count += GlitterSQL.insertFindMPO_PMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), graphTable); } } else { if (isRdfType) { count += GlitterSQL.insertFindNPO_O(container.getStmtProvider(), container.getConnection(), namedGraphId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } count += GlitterSQL.insertFindNPO_P(container.getStmtProvider(), container.getConnection(), namedGraphId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } } if (count > 0) { ClosableIterator<SelectAllResult> results = GlitterSQL.selectAll(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0)); try { parseResults(container, results, list, ids); } finally { results.close(); } } } break; case 14: { int count = 0; if (metadataGraph == -1) { count = GlitterSQL.insert14(container.getStmtProvider(), container.getConnection(), subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { count = GlitterSQL.insert14META(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { if (isRdfType) { oCount = GlitterSQL.prepareObjectInferPO_0(container.getStmtProvider(), container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); //oCount += GlitterSQL.prepareObjectInferPO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } oCount += GlitterSQL.preparePropInfer_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { if (isRdfType) { int counter = GlitterSQL.prepareObjectInferPO_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferPO_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } /*counter = GlitterSQL.prepareObjectInferPO_1_NO_WITH_0(container.getPreparedStatementProvider(),container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferPO_1_NO_WITH_1(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); }*/ } int counter = GlitterSQL.preparePropInfer_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.preparePropInfer_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (oCount > 0) { if (metadataGraph == -1) { if (isRdfType) { count += GlitterSQL.insertFindSPO_O(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } count += GlitterSQL.insertFindSPO_P(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { if (isRdfType) { count += GlitterSQL.insertFindSPO_OMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } count += GlitterSQL.insertFindSPO_PMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } } if (count > 0) { ClosableIterator<SelectAllResult> results = GlitterSQL.selectAll(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0)); try { parseResults(container, results, list, ids); } finally { results.close(); } } } break; case 15: { int count = 0; if (graphTable == null) { count = GlitterSQL.insert15(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()); } else { if (metadataGraph == -1) { count = GlitterSQL.insert15M(container.getStmtProvider(), container.getConnection(), subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } else { count = GlitterSQL.insert15MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable); } } int oCount = 0; if (container.getConfiguration().getSupportsWithClause()) { if (isRdfType) { oCount = GlitterSQL.prepareObjectInferPO_0(container.getStmtProvider(), container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); //oCount += GlitterSQL.prepareObjectInferPO_1(container.getPreparedStatementProvider(),container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } oCount += GlitterSQL.preparePropInfer_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } else { if (isRdfType) { int counter = GlitterSQL.prepareObjectInferPO_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferPO_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); } /*counter = GlitterSQL.prepareObjectInferPO_1_NO_WITH_0(container.getPreparedStatementProvider(),container.getConnection(), ontId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.prepareObjectInferPO_1_NO_WITH_1(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 2), container.getContainerName()); }*/ } int counter = GlitterSQL.preparePropInfer_0_NO_WITH_0(container.getStmtProvider(), container.getConnection(), ontId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); while (counter > 0) { oCount += counter; counter = GlitterSQL.preparePropInfer_0_NO_WITH_1(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 1), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 2), container.getContainerName()); } } if (oCount > 0) { if (graphTable != null) { if (metadataGraph == -1) { if (isRdfType) { count += GlitterSQL.insertFindMSPO_O(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName(), graphTable); } count += GlitterSQL.insertFindMSPO_P(container.getStmtProvider(), container.getConnection(), subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), graphTable); } else { if (isRdfType) { count += GlitterSQL.insertFindMSPO_OMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName(), graphTable); } count += GlitterSQL.insertFindMSPO_PMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName(), graphTable); } } else { if (isRdfType) { count += GlitterSQL.insertFindNSPO_O(container.getStmtProvider(), container.getConnection(), namedGraphId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0), container.getContainerName()); } count += GlitterSQL.insertFindNSPO_P(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0), container.getContainerName()); } } if (count > 0) { ClosableIterator<SelectAllResult> results = GlitterSQL.selectAll(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0)); try { parseResults(container, results, list, ids); } finally { results.close(); } } } } } finally { try { BaseSQL.clearTableWithSessionPrefix(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), "QUERY"); } catch (RdbException e) { log.error(LogUtils.RDB_MARKER, "Error clearing temporary table:query", e); } try { BaseSQL.clearTableWithSessionPrefix(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("PROP_INFER_TMP", 0)); } catch (RdbException e) { log.error(LogUtils.RDB_MARKER, "Error clearing temporary table:PROP_INFER_TMP", e); } try { BaseSQL.clearTableWithSessionPrefix(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0)); } catch (RdbException e) { log.error(LogUtils.RDB_MARKER, "Error clearing temporary table:STMT_TMP", e); } try { BaseSQL.clearTableWithSessionPrefix(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("OBJ_INFER_TMP", 0)); } catch (RdbException e) { log.error(LogUtils.RDB_MARKER, "Error clearing temporary table:OBJ_INFER_TMP", e); } } container.getNodeLayout().resolveStoredIds(ids, container.getConnection()); return list; } catch (RdbException e) { throw new AnzoException(ExceptionConstants.CLIENT.FAILED_CONTAINER_FIND_STATEMENTS, e); } } /** * Find all statements in container that match the provided parameters * * @param container * source of data * @param subj * Subject resource to match, or wildcard if null * @param prop * Predicate uri to match, or wildcard if null * @param obj * Object value to match, or wildcard if null * @param contexts * Context values to match, or wildcard if null * @return Iterable set of quads containing results of find operation * @throws AnzoException * if there was an error finding statements */ @SuppressWarnings("unchecked") public static Iterable<Quad> findStatements(RDBQuadStore container, Resource subj, URI prop, Value obj, URI... contexts) throws AnzoException { Long namedGraphId = null; String graphTable = null; int metadataGraph = -1; if (contexts != null && contexts.length == 1) { URI context = (URI) StatementUtils.convertUriToAny(contexts[0]); if (context != null) { namedGraphId = container.getNodeLayout().fetchId(context, container.getConnection()); if (namedGraphId == null) { return Collections.EMPTY_LIST; // required node is not even in db } metadataGraph = UriGenerator.isMetadataGraphUri(context) ? 1 : 0; } } else { HashSet<Value> set = new HashSet<Value>(); boolean includeAllNamedGraphs = false, includeAllMetadataGraphs = false; Map<Value, Long> graphIds = null; if (contexts != null && contexts.length > 0) { for (Resource context : contexts) { if (context.equals(GRAPHS.ALL_GRAPHS)) includeAllNamedGraphs = includeAllMetadataGraphs = true; else if (context.equals(GRAPHS.ALL_NAMEDGRAPHS)) includeAllNamedGraphs = true; else if (context.equals(GRAPHS.ALL_METADATAGRAPHS)) includeAllMetadataGraphs = true; else set.add(context); } if (set.size() > 0) { graphIds = container.getNodeLayout().resolveStoredNodes(set, false, container.getConnection(), -1); if (graphIds.size() < set.size()) { set.removeAll(graphIds.keySet()); log.debug(LogUtils.RDB_MARKER, "findStatementsInferred", new UnknownGraphException(StringUtils.join(set.iterator(), ", "))); if (graphIds.size() == 0 && !includeAllNamedGraphs && !includeAllMetadataGraphs) { return Collections.EMPTY_LIST;// required node is not even in db } } if (graphIds.size() > 0) { graphTable = SQLQueryConstants.defaultGraphsTempTable; //container.populateValidGraphs(graphIds, includeAllNamedGraphs, includeAllMetadataGraphs, graphTable); //container.populateValidGraphs(graphIds, includeAllNamedGraphs, graphTable); } } else if (includeAllNamedGraphs || includeAllMetadataGraphs) { metadataGraph = includeAllNamedGraphs ? (includeAllMetadataGraphs ? -1 : 0) : 1; } } } return findStatements(container, subj, prop, obj, namedGraphId, metadataGraph, graphTable); } /** * Find statements in container that match pattern. <li>If graphTable is not null, queries are joined against temporary table containing valid graphs for * this query</li> <li>Else if the namedGraphId is not null, then queries go against only statements that have the specific namedGraphId</li> <li>Finally, * if both the graphTable and namedGraphId are null, query either queries all graphs if metadataGraph==-1, namedGraphs if metadataGraph==0, or * metadataGraphs if metadataGraph==1 * * @param container * source of data * @param subj * Subject resource to match, or wildcard if null * @param prop * Predicate uri to match, or wildcard if null * @param obj * Object value to match, or wildcard if null * @param namedGraphId * id of namedGraph to query * @param metadataGraph * if both the graphTable and namedGraphId are null, query either queries all graphs if metadataGraph==-1, namedGraphs if metadataGraph==0, or * metadataGraphs if metadataGraph==1 * @param graphTable * temporary table containing valid graphs for this query * @return Iterable set of quads containing results of find operation * @throws AnzoException * if there was an error finding statements */ public static Iterable<Quad> findStatements(RDBQuadStore container, Resource subj, URI prop, Value obj, Long namedGraphId, int metadataGraph, String graphTable) throws AnzoException { try { ArrayList<Quad> list = new ArrayList<Quad>(); HashSet<Long> ids = new HashSet<Long>(); try { subj = (Resource) StatementUtils.convertUriToAny(subj); prop = (URI) StatementUtils.convertUriToAny(prop); obj = StatementUtils.convertUriToAny(obj); int type = 0; Long subjId = null; Long predId = null; Long objId = null; if (subj != null) { subjId = container.getNodeLayout().fetchId(subj, container.getConnection()); if (subjId == null) { return Collections.<Quad> emptyList(); // required node is not even in db } } else { //subjId = null;//Long.valueOf(-1); } if (prop != null) { predId = container.getNodeLayout().fetchId(prop, container.getConnection()); if (predId == null) { return Collections.<Quad> emptyList(); // required node is not even in db } } else { //predId = null;//Long.valueOf(-1); } if (obj != null) { objId = container.getNodeLayout().fetchId(obj, container.getConnection()); if (objId == null) { return Collections.<Quad> emptyList(); // required node is not even in db } } else { //objId = null;// Long.valueOf(-1); } if (namedGraphId != null || graphTable != null) type |= 1; if (subjId != null) type |= 2; if (predId != null) type |= 4; if (objId != null) type |= 8; // if(graphTable!=null)System.err.println("Row Count:"+ GlitterSQL.countRows(container.getPreparedStatementProvider(),container.getConnection(), container.getConfiguration().getSessionPrefix(), graphTable)); switch (type) { case 0: { parseResultsQuad(container, ExtraSQL.select0(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } break; case 1: { if (graphTable == null) { parseResultsQuad(container, ExtraSQL.select1(container.getStmtProvider(), container.getConnection(), namedGraphId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select1M(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } } break; case 2: { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select2(container.getStmtProvider(), container.getConnection(), subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select2META(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } } break; case 3: { if (graphTable == null) { parseResultsQuad(container, ExtraSQL.select3(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select3M(container.getStmtProvider(), container.getConnection(), subjId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } } break; case 4: { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select4(container.getStmtProvider(), container.getConnection(), predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select4META(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } } break; case 5: { if (graphTable == null) { parseResultsQuad(container, ExtraSQL.select5(container.getStmtProvider(), container.getConnection(), namedGraphId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select5M(container.getStmtProvider(), container.getConnection(), predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } else { parseResultsQuad(container, ExtraSQL.select5MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } } } break; case 6: { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select6(container.getStmtProvider(), container.getConnection(), subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select6META(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } } break; case 7: { if (graphTable == null) { parseResultsQuad(container, ExtraSQL.select7(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select7M(container.getStmtProvider(), container.getConnection(), subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } else { parseResultsQuad(container, ExtraSQL.select7MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } } } break; case 8: { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select8(container.getStmtProvider(), container.getConnection(), objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select8META(container.getStmtProvider(), container.getConnection(), metadataGraph, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } } break; case 9: { if (graphTable == null) { parseResultsQuad(container, ExtraSQL.select9(container.getStmtProvider(), container.getConnection(), namedGraphId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select9M(container.getStmtProvider(), container.getConnection(), objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } else { parseResultsQuad(container, ExtraSQL.select9MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } } } break; case 10: { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select10(container.getStmtProvider(), container.getConnection(), subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select10META(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } } break; case 11: { if (graphTable == null) { parseResultsQuad(container, ExtraSQL.select11(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select11M(container.getStmtProvider(), container.getConnection(), subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } else { parseResultsQuad(container, ExtraSQL.select11MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } } } break; case 12: { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select12(container.getStmtProvider(), container.getConnection(), predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select12META(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } } break; case 13: { if (graphTable == null) { parseResultsQuad(container, ExtraSQL.select13(container.getStmtProvider(), container.getConnection(), namedGraphId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select13M(container.getStmtProvider(), container.getConnection(), predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } else { parseResultsQuad(container, ExtraSQL.select13MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } } } break; case 14: { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select14(container.getStmtProvider(), container.getConnection(), subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { parseResultsQuad(container, ExtraSQL.select14META(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } } break; case 15: { if (graphTable == null) { parseResultsQuad(container, ExtraSQL.select15(container.getStmtProvider(), container.getConnection(), namedGraphId, subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName()), list, ids); } else { if (metadataGraph == -1) { parseResultsQuad(container, ExtraSQL.select15M(container.getStmtProvider(), container.getConnection(), subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } else { parseResultsQuad(container, ExtraSQL.select15MMETA(container.getStmtProvider(), container.getConnection(), metadataGraph, subjId, predId, objId, container.getConfiguration().getSessionPrefix(), container.getConfiguration().getUniqueTempName("STMT_TMP", 0), container.getContainerName(), graphTable), list, ids); } } } } } finally { try { if (graphTable != null) BaseSQL.truncateTableWithSessionMayCommit(container.getStmtProvider(), container.getConnection(), container.getConfiguration().getSessionPrefix(), graphTable); } catch (RdbException e) { log.error(LogUtils.RDB_MARKER, "Error clearing temporary table:" + graphTable, e); } } container.getNodeLayout().resolveStoredIds(ids, container.getConnection()); return list; } catch (RdbException e) { throw new AnzoException(ExceptionConstants.CLIENT.FAILED_CONTAINER_FIND_STATEMENTS, e); } } private static void parseResults(RDBQuadStore container, ClosableIterator<SelectAllResult> results, ArrayList<Quad> list, HashSet<Long> ids) throws RdbException { for (SelectAllResult result : results) { long n = result.getNamedgraphId(); long s = result.getSubjId(); long p = result.getPropId(); long o = result.getObjId(); Quad quint = new Quad(container.getConnection(), container.getNodeLayout().getNodeConverter(), n, s, p, o); list.add(quint); if (!container.getNodeLayout().isCached(n)) ids.add(n); if (!container.getNodeLayout().isCached(s)) ids.add(s); if (!container.getNodeLayout().isCached(p)) ids.add(p); if (!container.getNodeLayout().isCached(o)) ids.add(o); } } private static void parseResultsQuad(RDBQuadStore container, ClosableIterator<SelectQuadResult> results, ArrayList<Quad> list, HashSet<Long> ids) throws RdbException { try { for (SelectQuadResult result : results) { long n = result.getNamedGraphId(); long s = result.getSubj(); long p = result.getProp(); long o = result.getObj(); Quad quint = new Quad(container.getConnection(), container.getNodeLayout().getNodeConverter(), n, s, p, o); list.add(quint); if (!container.getNodeLayout().isCached(n)) ids.add(n); if (!container.getNodeLayout().isCached(s)) ids.add(s); if (!container.getNodeLayout().isCached(p)) ids.add(p); if (!container.getNodeLayout().isCached(o)) ids.add(o); } } finally { results.close(); } } private static void parseResultsS(RDBQuadStore container, ClosableIterator<SelectSResult> results, ArrayList<Quad> list, HashSet<Long> ids) throws RdbException { for (SelectSResult result : results) { long n = result.getNamedgraphId(); long s = result.getSubjId(); long p = result.getPropId(); long o = result.getObjId(); Quad quint = new Quad(container.getConnection(), container.getNodeLayout().getNodeConverter(), n, s, p, o); list.add(quint); if (!container.getNodeLayout().isCached(n)) ids.add(n); if (!container.getNodeLayout().isCached(s)) ids.add(s); if (!container.getNodeLayout().isCached(p)) ids.add(p); if (!container.getNodeLayout().isCached(o)) ids.add(o); } } private static void parseResultsP(RDBQuadStore container, ClosableIterator<SelectPResult> results, ArrayList<Quad> list, HashSet<Long> ids) throws RdbException { for (SelectPResult result : results) { long n = result.getNamedgraphId(); long s = result.getSubjId(); long p = result.getPropId(); long o = result.getObjId(); Quad quint = new Quad(container.getConnection(), container.getNodeLayout().getNodeConverter(), n, s, p, o); list.add(quint); if (!container.getNodeLayout().isCached(n)) ids.add(n); if (!container.getNodeLayout().isCached(s)) ids.add(s); if (!container.getNodeLayout().isCached(p)) ids.add(p); if (!container.getNodeLayout().isCached(o)) ids.add(o); } } private static void parseResultsO(RDBQuadStore container, ClosableIterator<SelectOResult> results, ArrayList<Quad> list, HashSet<Long> ids) throws RdbException { for (SelectOResult result : results) { long n = result.getNamedgraphId(); long s = result.getSubjId(); long p = result.getPropId(); long o = result.getObjId(); Quad quint = new Quad(container.getConnection(), container.getNodeLayout().getNodeConverter(), n, s, p, o); list.add(quint); if (!container.getNodeLayout().isCached(n)) ids.add(n); if (!container.getNodeLayout().isCached(s)) ids.add(s); if (!container.getNodeLayout().isCached(p)) ids.add(p); if (!container.getNodeLayout().isCached(o)) ids.add(o); } } }