@Override public Resource getSubject() { return getSubject(Resource.class); }
@Override public boolean canBeFoldedBy(Resource subject) { return isFoldable() && referrers.contains(subject); }
@Override public boolean isFoldable() { return !isReference() && anonymous && referrers.size()==1 && references==1; }
void addLink(URI predicate, IndividualImpl individual) { Objects.requireNonNull(predicate,PREDICATE_PARAM); Objects.requireNonNull(individual,INDIVIDUAL_PARAM); findAssertions(predicate).add(individual); individual.addReferrer(subject); }
void add(Resource subject, URI predicate, Value object) { if(object instanceof Literal) { getOrCreateIndividual(subject).addAssertion(predicate, (Literal)object); } else { IndividualImpl target = getOrCreateIndividual(subject); IndividualImpl linked = getOrCreateIndividual((Resource)object); target.addLink(predicate, linked); } collectNamespace(subject); collectNamespace(predicate); collectNamespace(object); }
private IndividualImpl getOrCreateIndividual(Resource subject) { IndividualImpl asserts = individuals.get(subject); if(asserts==null) { asserts=new IndividualImpl(subject); subjects.add(subject); individuals.put(subject, asserts); } return asserts; }
@Override public String toString(){ String nl = System.getProperty("line.separator"); StringBuilder out=new StringBuilder(); out.append("Individual(").append(subject).append(") {").append(nl); for(URI predicate:this) { out.append("\t").append(getAssertions(predicate)).append(nl); } out.append("}"); return out.toString(); }
void addAssertion(URI predicate, Literal object) { Objects.requireNonNull(predicate,PREDICATE_PARAM); Objects.requireNonNull(object,OBJECT_PARAM); findAssertions(predicate).add(object); }