package org.linkeddatafragments.util; import org.apache.jena.datatypes.RDFDatatype; import org.apache.jena.datatypes.TypeMapper; import org.apache.jena.rdf.model.RDFNode; import org.apache.jena.rdf.model.ResourceFactory; /** * A {@link TriplePatternElementParser} for Jena-based backends. * * @author <a href="http://olafhartig.de">Olaf Hartig</a> */ public class TriplePatternElementParserForJena extends TriplePatternElementParser<RDFNode,String,String> { private static TriplePatternElementParserForJena instance = null; /** * * @return */ public static TriplePatternElementParserForJena getInstance() { if ( instance == null ) { instance = new TriplePatternElementParserForJena(); } return instance; } /** * */ protected TriplePatternElementParserForJena() {} /** * * @param varName * @return */ @Override public String createNamedVariable( final String varName ) { return varName; } /** * * @param label * @return */ @Override public String createAnonymousVariable( final String label ) { return label; } /** * * @param label * @return */ @Override public RDFNode createBlankNode( final String label ) { return ResourceFactory.createResource(); } /** * * @param uri * @return */ @Override public RDFNode createURI( final String uri ) { return ResourceFactory.createResource( uri ); } /** * * @param label * @param typeURI * @return */ @Override public RDFNode createTypedLiteral( final String label, final String typeURI ) { final RDFDatatype dt = TypeMapper.getInstance() .getSafeTypeByName( typeURI ); return ResourceFactory.createTypedLiteral( label, dt ); } /** * * @param label * @param languageTag * @return */ @Override public RDFNode createLanguageLiteral( final String label, final String languageTag ) { return ResourceFactory.createLangLiteral( label, languageTag ); } /** * * @param label * @return */ @Override public RDFNode createPlainLiteral( final String label ) { return ResourceFactory.createPlainLiteral( label ); } /** * * @param parameter * @return */ @Override public RDFNode handleUnparsableParameter( final String parameter ) { return CommonResources.INVALID_URI; } }