default <T extends ImmutableTerm> ImmutableList<T> updateSubject(ImmutableList<T> originalArguments, T newSubject) { return updateSPO(originalArguments, newSubject, getProperty(originalArguments), getObject(originalArguments)); }
private static ImmutableSet<Constant> extractIRITemplates(RDFAtomPredicate predicate, IQ definition) { ImmutableList<Variable> projectedVariables = definition.getProjectionAtom().getArguments(); return Stream.of(predicate.getSubject(projectedVariables), predicate.getObject(projectedVariables)) .flatMap(v -> extractIRITemplates(v, definition.getTree())) .collect(ImmutableCollectors.toSet()); }
private static PredicateClassification classify(ImmutableSet<Constant> sameAsIriTemplates, IQ definition, RDFAtomPredicate rdfAtomPredicate, boolean isClass) { ImmutableList<Variable> variables = definition.getProjectionAtom().getArguments(); /* * Current limitation: is the object is concerned about SameAs rewriting, the subject is supposed also * concerned. * TODO: enrich the classification */ if (!isClass && extractIRITemplates(rdfAtomPredicate.getObject(variables), definition.getTree()) .anyMatch(sameAsIriTemplates::contains)) { return PredicateClassification.AT_LEAST_OBJECT; } return extractIRITemplates(rdfAtomPredicate.getSubject(variables), definition.getTree()) .filter(sameAsIriTemplates::contains) .findAny() .map(t -> PredicateClassification.SUBJECT_ONLY) .orElse(PredicateClassification.NONE); }
? predicate.getObject(projectionAtom.getArguments()) : predicate.getProperty(projectionAtom.getArguments());
IRI iri = IRI.create(propertyIRI.get().getIRIString()); ImmutableTerm objectTerm = predicate.getObject(terms); if (objectTerm instanceof ImmutableFunctionalTerm) {
ImmutableTerm term2 = atomPredicate.getObject(substitutedTerms);
Variable originalObject = rdfAtomPredicate.getObject(originalProjectedVariables);
private Variable getVarFromRDFAtom(DistinctVariableOnlyDataAtom atom, Position position) { switch (position) { case SUBJECT: return getRDFAtomPredicate(atom).getSubject(atom.getArguments()); case OBJECT: return getRDFAtomPredicate(atom).getObject(atom.getArguments()); case PROPERTY: return getRDFAtomPredicate(atom).getProperty(atom.getArguments()); default: throw new UnexpectedPositionException(position); } }