001/** 002 * Copyright (c) 2011, The University of Southampton and the individual contributors. 003 * All rights reserved. 004 * 005 * Redistribution and use in source and binary forms, with or without modification, 006 * are permitted provided that the following conditions are met: 007 * 008 * * Redistributions of source code must retain the above copyright notice, 009 * this list of conditions and the following disclaimer. 010 * 011 * * Redistributions in binary form must reproduce the above copyright notice, 012 * this list of conditions and the following disclaimer in the documentation 013 * and/or other materials provided with the distribution. 014 * 015 * * Neither the name of the University of Southampton nor the names of its 016 * contributors may be used to endorse or promote products derived from this 017 * software without specific prior written permission. 018 * 019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 020 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 021 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 022 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 023 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 024 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 025 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 026 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 027 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 028 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 029 */ 030package org.openimaj.rdf.utils; 031 032import com.hp.hpl.jena.graph.Node; 033import com.hp.hpl.jena.query.ParameterizedSparqlString; 034import com.hp.hpl.jena.rdf.model.Model; 035import com.hp.hpl.jena.rdf.model.Resource; 036 037/** 038 * Some tools for playing with {@link ParameterizedSparqlString} instances 039 * 040 * @author Sina Samangooei (ss@ecs.soton.ac.uk) 041 */ 042public class PQUtils { 043 044 /** 045 * Set a {@link ParameterizedSparqlString} literal 046 * 047 * @param pss 048 * @param strings 049 * @param geo 050 */ 051 public static void setPSSLiteral(ParameterizedSparqlString pss, String[] strings, double[] geo) { 052 for (int i = 0; i < strings.length; i++) { 053 if (geo == null) { 054 setNull(pss, strings[i]); 055 } 056 else { 057 pss.setLiteral(strings[i], geo[i]); 058 } 059 } 060 } 061 062 /** 063 * Set a {@link ParameterizedSparqlString} null 064 * 065 * @param pss 066 * @param name 067 */ 068 public static void setNull(ParameterizedSparqlString pss, String name) { 069 pss.setLiteral(name, Node.NULL.toString()); 070 } 071 072 /** 073 * Set a {@link ParameterizedSparqlString} literal 074 * 075 * @param pss 076 * @param name 077 * @param d 078 */ 079 public static void setPSSLiteral(ParameterizedSparqlString pss, String name, double d) { 080 pss.setLiteral(name, d); 081 } 082 083 /** 084 * Set a {@link ParameterizedSparqlString} literal 085 * 086 * @param pss 087 * @param name 088 * @param d 089 */ 090 public static void setPSSLiteral(ParameterizedSparqlString pss, String name, int d) { 091 pss.setLiteral(name, d); 092 } 093 094 /** 095 * Set a {@link ParameterizedSparqlString} literal 096 * 097 * @param pss 098 * @param name 099 * @param lit 100 */ 101 public static void setPSSLiteral(ParameterizedSparqlString pss, String name, String lit) { 102 if (lit != null) 103 pss.setLiteral(name, lit); 104 else 105 setNull(pss, name); 106 107 } 108 109 /** 110 * @param pss 111 * @param name 112 * @param iri 113 */ 114 public static void setPSSIri(ParameterizedSparqlString pss, String name, String iri) { 115 if (iri != null) 116 pss.setIri(name, iri); 117 else 118 setNull(pss, name); 119 } 120 121 /** 122 * @param pss 123 * @param name 124 * @param iri 125 */ 126 public static void setPSSResource(ParameterizedSparqlString pss, String name, Resource iri) { 127 if (iri != null) 128 pss.setParam(name, iri); 129 else 130 setNull(pss, name); 131 } 132 133 /** 134 * Construct a {@link ParameterizedSparqlString} 135 * 136 * @param query 137 * @param m 138 * @return the {@link ParameterizedSparqlString} 139 */ 140 public static ParameterizedSparqlString constructPQ(String query, Model m) { 141 final ParameterizedSparqlString pss = new ParameterizedSparqlString(query, m); 142 return pss; 143 } 144}