PropertyPaths.java
/*******************************************************************************
* Copyright (c) 2019 Eclipse RDF4J contributors.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*******************************************************************************/
package org.eclipse.rdf4j.sparqlbuilder.core;
import java.util.Arrays;
import java.util.stream.Collectors;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.sparqlbuilder.rdf.Rdf;
import org.eclipse.rdf4j.sparqlbuilder.rdf.RdfPredicate;
/**
* Use the {@link org.eclipse.rdf4j.sparqlbuilder.constraint.propertypath.builder.PropertyPathBuilder} instead.
*/
@Deprecated(since = "4.0")
public class PropertyPaths {
/**
* Construct property paths for use with the {@link SparqlBuilder}
*
* <p>
* <b>Example:</b> {@code subject.has(path(zeroOrMore(property)), object)}.
* <p>
*
* @param aElements the path elements
* @return a property path
*/
public static RdfPredicate path(RdfPredicate... aElements) {
return () -> {
StringBuilder sb = new StringBuilder();
for (QueryElement element : aElements) {
if (sb.length() > 0) {
sb.append("/");
}
sb.append(element.getQueryString());
}
return sb.toString();
};
}
public static RdfPredicate path(IRI... aElements) {
return path(Arrays.stream(aElements).map(Rdf::iri).collect(Collectors.toList()).toArray(new RdfPredicate[0]));
}
public static RdfPredicate zeroOrMore(RdfPredicate aElement) {
return () -> aElement.getQueryString() + "*";
}
public static RdfPredicate zeroOrMore(IRI aElement) {
return zeroOrMore(Rdf.iri(aElement));
}
public static RdfPredicate oneOrMore(RdfPredicate aElement) {
return () -> aElement.getQueryString() + "+";
}
public static RdfPredicate oneOrMore(IRI aElement) {
return oneOrMore(Rdf.iri(aElement));
}
}