StringToGraphConverterDefault.java

package org.linkedopenactors.rdfpub.store.rdf4j;

import java.io.IOException;
import java.io.StringReader;

import org.apache.commons.rdf.api.Graph;
import org.apache.commons.rdfrdf4j.RDF4J;
import org.eclipse.rdf4j.model.Model;
import org.eclipse.rdf4j.rio.RDFParseException;
import org.eclipse.rdf4j.rio.Rio;
import org.eclipse.rdf4j.rio.UnsupportedRDFormatException;
import org.linkedopenactors.rdfpub.domain.commonsrdf.RdfFormat;
import org.linkedopenactors.rdfpub.domain.commonsrdf.StringToGraphConverter;
import org.springframework.stereotype.Component;

import lombok.extern.slf4j.Slf4j;

@Component
@Slf4j
public class StringToGraphConverterDefault implements StringToGraphConverter {

	private RDF4J rdf4j;

	public StringToGraphConverterDefault(RDF4J rdf4j) {
		this.rdf4j = rdf4j;		
	}
	
	@Override
	public Graph convert(RdfFormat rdfFormat, String graphAsString) {
		Model model;
		try {
			model = Rio.parse(new StringReader(graphAsString), RdfFormatConverter.toRdf4j(rdfFormat));
		} catch (RDFParseException | UnsupportedRDFormatException | IOException e) {
			log.error("error converting the following graph to " + rdfFormat + " : " + graphAsString, e);
			throw new IllegalArgumentException("Problem converting to a graph.", e);
		}
		return rdf4j.asGraph(model);
	}
}