protected RDFTriple remapNodesIfNecessary(final RDFResource node, final RDFTriple triple) { RDFTriple tripleToRender = triple; RDFResourceBlankNode remappedNode = verifyNotNull(triplesWithRemappedNodes, "triplesWithRemappedNodes not initialised yet") .get(tripleToRender); if (remappedNode != null) { tripleToRender = new RDFTriple(tripleToRender.getSubject(), tripleToRender.getPredicate(), remappedNode); } if (!node.equals(tripleToRender.getSubject())) { // the node will not match the triple subject if the node itself // is a remapped blank node // in which case the triple subject needs remapping as well tripleToRender = new RDFTriple(node, tripleToRender.getPredicate(), tripleToRender.getObject()); } return tripleToRender; }
/** @param w * writer to write to * @throws IOException * if exceptions happen */ public void dumpTriples(Writer w) throws IOException { for (Set<RDFTriple> set : triplesBySubject.values()) { for (RDFTriple triple : set) { w.write(triple.toString()); w.write("\n"); } } w.flush(); }
/** * @param subject the subject * @param subjectAnon whether the subject is anonymous * @param subjectAxiom true if axiom * @param predicate the predicate * @param object the object * @param objectAnon whether the object is anonymous * @param objectAxiom true if axiom */ public RDFTriple(IRI subject, boolean subjectAnon, boolean subjectAxiom, IRI predicate, IRI object, boolean objectAnon, boolean objectAxiom) { this(getResource(subject, subjectAnon, subjectAxiom), // Predicate is not allowed to be anonymous new RDFResourceIRI(predicate), getResource(object, objectAnon, objectAxiom)); }
private void rebuildAnonRoots() { rootAnonymousNodes.clear(); for (RDFTriple triple : triples) { if (triple.getSubject().isAnonymous()) { rootAnonymousNodes.add((RDFResourceBlankNode) triple.getSubject()); } } for (RDFTriple triple : triples) { if (triple.getObject().isAnonymous() && !triple.isSubjectSameAsObject()) { rootAnonymousNodes.remove(triple.getObject()); } } }
private void rebuildAnonRoots() { rootAnonymousNodes = new HashSet<RDFResourceBlankNode>(); for (RDFTriple triple : triples) { if(triple.getSubject() instanceof RDFResourceBlankNode) { rootAnonymousNodes.add((RDFResourceBlankNode)triple.getSubject()); } } for (RDFTriple triple : triples) { if (!triple.getObject().isLiteral()) { rootAnonymousNodes.remove(triple.getObject()); } if (!triple.getSubject().isAnonymous()) { rootAnonymousNodes.remove(triple.getSubject()); } } }
@Override public boolean equals(@Nullable Object obj) { if (obj == this) { return true; } if (obj instanceof RDFTriple) { RDFTriple other = (RDFTriple) obj; return subject.equals(other.subject) && predicate.equals(other.predicate) && object.equals(other.object); } // Commons RDF Triple.equals() contract if (obj instanceof Triple) { // Note: This also works on RDFLiteral // but is slightly more expensive as it must call the // getter methods when accessing obj. // // To ensure future compatibility, the Commons RDF getter // methods are also called on this rather than using the fields. Triple triple = (Triple) obj; return getSubject().equals(triple.getSubject()) && getPredicate().equals(triple.getPredicate()) && getObject().equals(triple.getObject()); } return false; }
Map<RDFNode, List<RDFTriple>> sharers = createMap(); for (RDFTriple t : triples) { if (t.getObject().isAnonymous() && !t.getObject().isIndividual() && !t.getObject().isAxiom() && notInSkippedPredicates(t.getPredicate())) { List<RDFTriple> list = sharers.get(t.getObject()); if (list == null) { list = new ArrayList<>(2); sharers.put(t.getObject(), list);
Collection<RDFTriple> triples = getRDFGraph().getTriplesForSubject(node); for (RDFTriple triple : triples) { IRI propertyIRI = triple.getPredicate().getIRI(); if (propertyIRI.equals(RDF_TYPE.getIRI()) && !triple.getObject().isAnonymous() && BUILT_IN_VOCABULARY_IRIS.contains(triple.getObject().getIRI()) && prettyPrintedTypes.contains(triple.getObject().getIRI())) { candidatePrettyPrintTypeTriple = triple; writer.writeStartElement(RDF_DESCRIPTION.getIRI()); } else { writer.writeStartElement(candidatePrettyPrintTypeTriple.getObject().getIRI()); && candidatePrettyPrintTypeTriple.equals(triple)) { continue; writer.writeStartElement(triple.getPredicate().getIRI()); triple = remapNodesIfNecessary(node, triple); RDFNode objectNode = triple.getObject(); if (!objectNode.isLiteral()) { RDFResource objectRes = (RDFResource) objectNode;
@Override protected void addTriple(RDFResource subject, RDFResourceIRI pred, RDFNode object) { graph.addTriple(new RDFTriple(subject, pred, object)); }
/** * @param node node to search * @return true if the anon node is shared */ public boolean isAnonymousNodeSharedSubject(RDFResourceBlankNode node) { if(!node.isAnonymous()) { return false; } int count = 0; for(RDFTriple triple : triples) { if(triple.getObject() instanceof RDFResourceBlankNode) { RDFResourceBlankNode object = (RDFResourceBlankNode) triple.getObject(); if(object.equals(node)) { count++; if (count > 1) { return true; } } } } return false; }
boolean first = true; for (RDFTriple triple : triples) { RDFResource subj = triple.getSubject(); RDFResourceIRI pred = triple.getProperty(); if (lastSubject != null && (subj.equals(lastSubject) || subj.isAnonymous())) { if (lastPredicate != null && pred.equals(lastPredicate)) { write(triple.getObject()); } else { write(triple.getProperty()); write(" "); pushTab(); write(triple.getObject()); write(triple.getSubject()); write(" "); } else { write(triple.getProperty()); write(" "); pushTab(); write(triple.getObject());
/** @param triple * triple to add */ public void addTriple(RDFTriple triple) { // Reset the computation of root anon nodes rootAnonymousNodes = null; triples.add(triple); Set<RDFTriple> tripleSet = triplesBySubject.get(triple.getSubject()); if (tripleSet == null) { tripleSet = new HashSet<RDFTriple>(); triplesBySubject.put(triple.getSubject(), tripleSet); } tripleSet.add(triple); }
final List<RDFTriple> triples = getGraph().getSortedTriplesForSubject(node, true); for (RDFTriple triple : triples) { IRI propertyIRI = triple.getProperty().getIRI(); if (propertyIRI.equals(OWLRDFVocabulary.RDF_TYPE.getIRI()) && !triple.getObject().isAnonymous()) { if (OWLRDFVocabulary.BUILT_IN_VOCABULARY_IRIS.contains(triple.getObject() .getIRI())) { if (prettyPrintedTypes.contains(triple.getObject().getIRI())) { candidatePrettyPrintTypeTriple = triple; writer.writeStartElement(RDF_DESCRIPTION.getIRI()); } else { writer.writeStartElement(candidatePrettyPrintTypeTriple.getObject().getIRI()); && candidatePrettyPrintTypeTriple.equals(triple)) { continue; writer.writeStartElement(triple.getProperty().getIRI()); RDFNode objectNode = triple.getObject(); if (!objectNode.isLiteral()) { RDFResource objectRes = (RDFResource) objectNode;
protected void toJavaList(RDFNode n, List<RDFNode> list) { RDFNode currentNode = n; while (currentNode != null) { for (RDFTriple triple : graph.getSortedTriplesForSubject(currentNode, false)) { if (triple.getProperty().getIRI().equals(RDF_FIRST.getIRI())) { list.add(triple.getObject()); } } for (RDFTriple triple : graph.getSortedTriplesForSubject(currentNode, false)) { if (triple.getProperty().getIRI().equals(RDF_REST.getIRI())) { if (!triple.getObject().isAnonymous()) { if (triple.getObject().getIRI().equals(RDF_NIL.getIRI())) { // End of list currentNode = null; } } else { if(triple.getObject() instanceof RDFResource) { // Should be another list currentNode = (RDFResource)triple.getObject(); // toJavaList(triple.getObject(), list); } } } } } }
/** * Determines if a triple has a predicate that corresponds to owl:imports. * @param triple The triple. * @return <code>true</code> if the triple has a predicate equal to owl:imports */ private boolean isOWLImportsTriple(RDFTriple triple) { return triple.getPredicate().getResource().equals(OWLRDFVocabulary.OWL_IMPORTS.getIRI()); }
@Override public int compareTo(@Nullable RDFTriple o) { checkNotNull(o); assert o != null; // compare by predicate, then subject, then object int diff = comparePredicates(predicate, o.predicate); if (diff == 0) { diff = subject.compareTo(o.subject); } if (diff == 0) { diff = object.compareTo(o.object); } return diff; } }
@Override public boolean equals(@Nullable Object obj) { if (obj == this) { return true; } if (obj instanceof RDFTriple) { RDFTriple other = (RDFTriple) obj; return subject.equals(other.subject) && predicate.equals(other.predicate) && object.equals(other.object); } // Commons RDF Triple.equals() contract if (obj instanceof Triple) { // Note: This also works on RDFLiteral // but is slightly more expensive as it must call the // getter methods when accessing obj. // // To ensure future compatibility, the Commons RDF getter // methods are also called on this rather than using the fields. Triple triple = (Triple) obj; return getSubject().equals(triple.getSubject()) && getPredicate().equals(triple.getPredicate()) && getObject().equals(triple.getObject()); } return false; }
protected boolean isObjectList(RDFResource node) { for (RDFTriple triple : getRDFGraph().getTriplesForSubject(node)) { if (triple.getPredicate().getIRI().equals(RDF_TYPE.getIRI()) && !triple.getObject().isAnonymous() && triple.getObject().getIRI().equals(RDF_LIST.getIRI())) { List<RDFNode> items = new ArrayList<>(); toJavaList(node, items); return items.stream().noneMatch(RDFNode::isLiteral); } } return false; }
Collection<RDFTriple> triples = getRDFGraph().getTriplesForSubject(node); for (RDFTriple triple : triples) { IRI propertyIRI = triple.getPredicate().getIRI(); if (propertyIRI.equals(RDF_TYPE.getIRI()) && !triple.getObject().isAnonymous() && BUILT_IN_VOCABULARY_IRIS.contains(triple.getObject().getIRI()) && prettyPrintedTypes.contains(triple.getObject().getIRI())) { candidatePrettyPrintTypeTriple = triple; writer.writeStartElement(RDF_DESCRIPTION.getIRI()); } else { writer.writeStartElement(candidatePrettyPrintTypeTriple.getObject().getIRI()); && candidatePrettyPrintTypeTriple.equals(triple)) { continue; writer.writeStartElement(triple.getPredicate().getIRI()); triple = remapNodesIfNecessary(node, triple); RDFNode objectNode = triple.getObject(); if (!objectNode.isLiteral()) { RDFResource objectRes = (RDFResource) objectNode;
private void rebuildAnonRoots() { rootAnonymousNodes.clear(); for (RDFTriple triple : triples) { if (triple.getSubject().isAnonymous()) { rootAnonymousNodes.add((RDFResourceBlankNode) triple.getSubject()); } } for (RDFTriple triple : triples) { if (triple.getObject().isAnonymous() && !triple.isSubjectSameAsObject()) { rootAnonymousNodes.remove(triple.getObject()); } } }