/** If _n_ is a ReifiedStatement, create a local copy of it, which will force the underlying reifier to take note of the mapping. */ private void noteIfReified( RDFNode n ) { if (n.canAs( ReifiedStatement.class )) { ReifiedStatement rs = n.as( ReifiedStatement.class ); createReifiedStatement( rs.getURI(), rs.getStatement() ); } }
/** * @param subj * The subject of the statement to be reified. * @param pred * The predicate of the statement to be reified. * @param obj * The object of the statement to be reified. * @param reifs * Properties and values to be affected to the reified statement. * @param uri * The uri (might be null) of the statement to create. */ protected String createReifiedStatement(final Resource subj, final Property pred, final RDFNode obj, final Map<Property, RDFNode> reifs, final String uri) { final ReifiedStatement rst; if (uri == null) { rst = this.model.createReifiedStatement(this.createStatement(subj, pred, obj, false)); } else { rst = this.model.createReifiedStatement(uri, this.createStatement(subj, pred, obj, false)); } for (final Entry<Property, RDFNode> entry : reifs.entrySet()) { rst.addProperty(entry.getKey(), entry.getValue()); } if (uri == null) { return rst.getId().getLabelString(); } return rst.getURI(); }
/** Remove a given reification from this model. Other reifications of the same statement are untouched. @param rs the reified statement to be removed */ public void removeReification( ReifiedStatement rs ) { ReifierStd.remove( model.getGraph(), rs.asNode(), rs.getStatement().asTriple() ); }
/** * @param type * Whether statements to retrieve are anonymous or named. * @return A list of internal ID or URI (depending on <code>type</code>) representing every reified statements in the model */ public List<String> listReifiedStatements(final ResourceTypes type) { final List<String> idsOrUris = new ArrayList<String>(); if (type.equals(ResourceTypes.ANON)) { for (final ReifiedStatement rs : this.listReifStats(type)) { idsOrUris.add(rs.getId().getLabelString()); } } else if (type.equals(ResourceTypes.NAMED)) { for (final ReifiedStatement rs : this.listReifStats(type)) { idsOrUris.add(rs.getURI()); } } else { LogFactory.getLog(this.getClass()).warn("Error in listReifiedStatement " + "ResourceType was neither an " + "anon nor a named resource..."); } return idsOrUris; }
while (rsExistingIter.hasNext()) { ReifiedStatement rstmt = rsExistingIter.next(); Statement st = rstmt.getProperty(DC.source); String source = st.getObject().toString(); if (mappingDocument.findLogicalTableMappingByUri(source) != null) { statementsToRemove.add(rstmt.getRequiredProperty(DC.source)); statementsToRemove.add(rstmt.getStatement()); if (incremental || writeReifiedModel) { ReifiedStatement rst = resultModel.createReifiedStatement(st); rst.addProperty(DC.source, resultModel.createResource(logicalTableMapping.getUri())); } else { resultModel.add(st); if (incremental || writeReifiedModel) { ReifiedStatement rst = resultModel.createReifiedStatement(st); rst.addProperty(DC.source, resultModel.createResource(logicalTableMapping.getUri())); } else { resultModel.add(st); if (incremental || writeReifiedModel) { ReifiedStatement rst = resultModel.createReifiedStatement(st); rst.addProperty(DC.source, resultModel.createResource(logicalTableMapping.getUri())); } else { resultModel.add(st); if (incremental || writeReifiedModel) {
/** * @param rs * The reified statement to look for predicate. * @return The predicate uri or null if an error occurs */ protected String getReifiedStatementPredicate(final ReifiedStatement rs) { return rs.getStatement().getPredicate().getURI(); }
/** * @param type * The type of reified statements to retrieve, i.e. anonymous or named ones. * @return Every reified statements of the model, having a type as <code>type</code>. */ private List<ReifiedStatement> listReifStats(final ResourceTypes type) { final RSIterator rsi = this.model.listReifiedStatements(); final List<ReifiedStatement> rss = new ArrayList<ReifiedStatement>(); if (type.equals(ResourceTypes.ANON)) { while (rsi.hasNext()) { final ReifiedStatement rs = rsi.nextRS(); if (rs.isAnon()) { rss.add(rs); } } } else if (type.equals(ResourceTypes.NAMED)) { while (rsi.hasNext()) { final ReifiedStatement rs = rsi.nextRS(); if (rs.isURIResource()) { rss.add(rs); } } } else { LogFactory.getLog(this.getClass()).warn("Error in listReifiedStatement " + "ResourceType was neither an " + "anon nor a named resource..."); } rsi.close(); return rss; }
/** * @return A list containing every statements including the one that are subject of reifications but not the reification implementation ones (subject, * object...). */ protected List<Statement> listStatements() { final List<Statement> stats = new ArrayList<Statement>(); final StmtIterator sit = this.model.listStatements(); while (sit.hasNext()) { final Statement stat = sit.nextStatement(); // Filtering reified statement if (!stat.getPredicate().equals(RDF.subject) && !stat.getPredicate().equals(RDF.predicate) && !stat.getPredicate().equals(RDF.object)) { if (stat.getPredicate().equals(RDF.type) && stat.getObject().isResource()) { if (!((Resource) stat.getObject()).equals(RDF.Statement)) { stats.add(stat); } } else { stats.add(stat); } } } sit.close(); final RSIterator rsit = this.model.listReifiedStatements(); while (rsit.hasNext()) { stats.add(rsit.nextRS().getStatement()); } rsit.close(); return stats; }
/** * @param idOrUri * The internal ID or uri of the reified statement to retrieve * @param type * The type of reified statements to retrieve, i.e. anonymous or named. * @return The statement or <code>null</code>. */ protected ReifiedStatement getSpecifiedReifStat(final String idOrUri, final ResourceTypes type) { ReifiedStatement toRet = null; if (type.equals(ResourceTypes.ANON)) { for (final ReifiedStatement rs : this.listReifStats(type)) { if (rs.getId().getLabelString().equals(idOrUri)) { toRet = rs; break; } } } else { for (final ReifiedStatement rs : this.listReifStats(type)) { if (rs.getURI().equals(idOrUri)) { toRet = rs; break; } } } return toRet; }
/** * @param rs * The reified statement to look for subject. * @param type * The type of the subject. * @return The subject (uri or id) or null if an error occurs */ protected String getReifiedStatementSubject(final ReifiedStatement rs, final ResourceTypes type) { String toRet = null; final Resource subj = rs.getStatement().getSubject(); if (type.equals(ResourceTypes.ANON) && subj.isAnon()) { toRet = subj.getId().getLabelString(); } else if (type.equals(ResourceTypes.NAMED) && subj.isURIResource()) { toRet = subj.getURI(); } return toRet; }
/** * @param rs * The reified statement to look for object. * @param type * The type of the object. * @return The object (literal value, id or uri) or null if an error occurs */ protected String getReifiedStatementObject(final ReifiedStatement rs, final RDFNodeTypes type) { String toRet = null; final RDFNode obj = rs.getStatement().getObject(); if (type.equals(RDFNodeTypes.ANON_R) && obj.isAnon()) { toRet = ((Resource) obj).getId().getLabelString(); } else if (type.equals(RDFNodeTypes.LITERAL) && obj.isLiteral()) { toRet = ((Literal) obj).getLexicalForm(); } else if (type.equals(RDFNodeTypes.NAMED_R) && obj.isURIResource()) { toRet = ((Resource) obj).getURI(); } return toRet; }