/** * Count all non-deleted triples in the triple store at the given snapshot date * @return * @throws SQLException */ public long getSnapshotSize(KiWiResource context, Date snapshotDate) throws SQLException { if(context.getId() < 0) { return 0; } requireJDBCConnection(); PreparedStatement querySize = getPreparedStatement("query.snapshot_size_ctx"); querySize.setLong(1,context.getId()); querySize.setTimestamp(2, new Timestamp(snapshotDate.getTime())); querySize.setTimestamp(3, new Timestamp(snapshotDate.getTime())); ResultSet result = querySize.executeQuery(); try { if(result.next()) { return result.getLong(1); } else { return 0; } } finally { result.close(); } }
private List<Map<String,Object>> formatVersions(List<Version> versions) { List<Map<String,Object>> result = new ArrayList<Map<String, Object>>(versions.size()); for(Version version : versions) { Map<String,Object> v_map = new HashMap<String, Object>(); v_map.put("id",version.getId()); if(version.getCreator() != null) { v_map.put("creator",version.getCreator().stringValue()); } v_map.put("date", DateUtils.ISO8601FORMAT.format(version.getCommitTime())); result.add(v_map); } return result; }
if(triple.getSubject().isUriResource() && triple.getObject().isUriResource()) { String sUri = triple.getSubject().stringValue(); String oUri = triple.getObject().stringValue(); DataIO.writeString(output,prefix); output.writeLong(triple.getSubject().getId()); DataIO.writeString(output, sUri.substring(prefix.length())); output.writeLong(triple.getSubject().getCreated().getTime());
if(triple.getSubject().isUriResource() && triple.getObject().isUriResource()) { String sUri = triple.getSubject().stringValue(); String oUri = triple.getObject().stringValue(); DataIO.writeString(output,prefix); output.writeLong(triple.getSubject().getId()); DataIO.writeString(output, sUri.substring(prefix.length())); output.writeLong(triple.getSubject().getCreated().getTime());
/** * Count all non-deleted triples in the triple store * @param context the context to count * @return number of non-deleted triples in the provided context * @throws SQLException */ public long getSize(KiWiResource context) throws SQLException { if (context.getId() < 0) { return 0; } requireJDBCConnection(); PreparedStatement querySize = getPreparedStatement("query.size_ctx"); querySize.setLong(1,context.getId()); try (ResultSet result = querySize.executeQuery()) { if (result.next()) { return result.getLong(1) + (tripleBatch != null ? tripleBatch.listTriples(null, null, null, context, false).size() : 0); } } return tripleBatch != null ? tripleBatch.listTriples(null, null, null, context, false).size() : 0; }
private List<Map<String,Object>> formatVersions(List<Version> versions) { List<Map<String,Object>> result = new ArrayList<Map<String, Object>>(versions.size()); for(Version version : versions) { Map<String,Object> v_map = new HashMap<String, Object>(); v_map.put("id",version.getId()); if(version.getCreator() != null) { v_map.put("creator",version.getCreator().stringValue()); } v_map.put("date", DateUtils.ISO8601FORMAT.format(version.getCommitTime())); result.add(v_map); } return result; }
/** * Count all non-deleted triples in the triple store * @param context the context to count * @return number of non-deleted triples in the provided context * @throws SQLException */ public long getSize(KiWiResource context) throws SQLException { if (context.getId() < 0) { return 0; } requireJDBCConnection(); PreparedStatement querySize = getPreparedStatement("query.size_ctx"); querySize.setLong(1,context.getId()); try (ResultSet result = querySize.executeQuery()) { if (result.next()) { return result.getLong(1) + (tripleBatch != null ? tripleBatch.listTriples(null, null, null, context, false).size() : 0); } } return tripleBatch != null ? tripleBatch.listTriples(null, null, null, context, false).size() : 0; }
result.put("id",version.getId()); if(version.getCreator() != null) { result.put("creator", version.getCreator().stringValue());
/** * List all versions in the database; operates directly on the result set, i.e. the iteration is carried out * lazily and needs to be closed when iteration is completed. * * @return * @throws SQLException */ private CloseableIteration<Version, SQLException> listVersionsInternal(KiWiResource r, Date from, Date to) throws SQLException { requireJDBCConnection(); PreparedStatement queryVersions = getPreparedStatement("load.versions_by_resource_between"); synchronized (queryVersions) { queryVersions.clearParameters(); if(r.getId() < 0) { return new EmptyIteration<Version, SQLException>(); } else { queryVersions.setLong(1, r.getId()); queryVersions.setTimestamp(2, new Timestamp(from.getTime())); queryVersions.setTimestamp(3, new Timestamp(to.getTime())); final ResultSet result = queryVersions.executeQuery(); return new ResultSetIteration<Version>(result, new ResultTransformerFunction<Version>() { @Override public Version apply(ResultSet row) throws SQLException { return constructVersionFromDatabase(result); } }); } } }
result.put("id",version.getId()); if(version.getCreator() != null) { result.put("creator", version.getCreator().stringValue());
/** * List all versions in the database affecting the given resource as subject; operates directly on the result set, * i.e. the iteration is carried out lazily and needs to be closed when iteration is completed. * * @return * @throws SQLException */ private CloseableIteration<Version, SQLException> listVersionsInternal(KiWiResource r) throws SQLException { if(r.getId() < 0) { return new EmptyIteration<Version, SQLException>(); } else { requireJDBCConnection(); PreparedStatement queryVersions = getPreparedStatement("load.versions_by_resource"); queryVersions.setLong(1,r.getId()); final ResultSet result = queryVersions.executeQuery(); return new ResultSetIteration<Version>(result, new ResultTransformerFunction<Version>() { @Override public Version apply(ResultSet row) throws SQLException { return constructVersionFromDatabase(result); } }); } }
/** * Return the version that is the most recent version for a resource given a reference date. The method will either * return the version that was current for the resource at the given date or return null in case such a version * does not exist (e.g. before the resource was created). * * @param resource the resource for which to find a version * @param date the reference date * @return the latest version of the resource at the given date, or null if such a version does not exist * @throws SQLException */ public Version getLatestVersion(KiWiResource resource, Date date) throws SQLException { requireJDBCConnection(); PreparedStatement queryVersions = getPreparedStatement("load.versions_by_resource_latest"); synchronized (queryVersions) { queryVersions.setLong(1, resource.getId()); queryVersions.setTimestamp(2, new Timestamp(date.getTime())); queryVersions.setMaxRows(1); ResultSet r = queryVersions.executeQuery(); try { if(r.next()) { return constructVersionFromDatabase(r); } else { return null; } } finally { r.close(); } } }
@Override public Boolean run() throws SQLException { PreparedStatement insertTriple = getPreparedStatement("store.triple"); insertTriple.setLong(1,triple.getId()); insertTriple.setLong(2,triple.getSubject().getId()); insertTriple.setLong(3,triple.getPredicate().getId()); insertTriple.setLong(4,triple.getObject().getId()); if (triple.getContext() != null) { insertTriple.setLong(5,triple.getContext().getId()); } else { insertTriple.setNull(5, Types.BIGINT); } insertTriple.setBoolean(6,triple.isInferred()); insertTriple.setTimestamp(7, new Timestamp(triple.getCreated().getTime())); int count = insertTriple.executeUpdate(); cacheTriple(triple); return count > 0; } });
@Override public Boolean run() throws SQLException { PreparedStatement insertTriple = getPreparedStatement("store.triple"); insertTriple.setLong(1,triple.getId()); insertTriple.setLong(2,triple.getSubject().getId()); insertTriple.setLong(3,triple.getPredicate().getId()); insertTriple.setLong(4,triple.getObject().getId()); if (triple.getContext() != null) { insertTriple.setLong(5,triple.getContext().getId()); } else { insertTriple.setNull(5, Types.BIGINT); } insertTriple.setBoolean(6,triple.isInferred()); insertTriple.setTimestamp(7, new Timestamp(triple.getCreated().getTime())); int count = insertTriple.executeUpdate(); cacheTriple(triple); return count > 0; } });
if(subject != null && subject.getId() < 0) { return new EmptyIteration<Statement, SQLException>(); return new EmptyIteration<Statement, SQLException>(); if(context != null && context.getId() < 0) { return new EmptyIteration<Statement, SQLException>(); query.setLong(position++, subject.getId()); query.setLong(position++, context.getId());
@Override public Void run() throws SQLException { PreparedStatement insertTriple = getPreparedStatement("store.triple"); insertTriple.clearParameters(); insertTriple.clearBatch(); synchronized (tripleBatch) { for(KiWiTriple triple : tripleBatch) { // retrieve a new triple ID and set it in the object if(triple.getId() < 0) { triple.setId(getNextSequence()); } insertTriple.setLong(1,triple.getId()); insertTriple.setLong(2,triple.getSubject().getId()); insertTriple.setLong(3,triple.getPredicate().getId()); insertTriple.setLong(4,triple.getObject().getId()); if(triple.getContext() != null) { insertTriple.setLong(5,triple.getContext().getId()); } else { insertTriple.setNull(5, Types.BIGINT); } insertTriple.setBoolean(6,triple.isInferred()); insertTriple.setTimestamp(7, new Timestamp(triple.getCreated().getTime())); insertTriple.addBatch(); } } insertTriple.executeBatch(); tripleBatch.clear(); return null; } });