You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by sf...@apache.org on 2010/12/12 16:13:37 UTC
svn commit: r1044832 [5/14] - in /incubator/stanbol/trunk/rick:
indexing/dbPedia/src/main/java/eu/iksproject/rick/indexing/dbPedia/cli/
indexing/genericRdf/src/main/java/eu/iksproject/rick/indexing/rdf/
indexing/geonames/src/main/java/eu/iksproject/ric...
Modified: incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/QueryResultsToRDF.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/QueryResultsToRDF.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/QueryResultsToRDF.java (original)
+++ incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/QueryResultsToRDF.java Sun Dec 12 15:13:35 2010
@@ -15,71 +15,71 @@ import eu.iksproject.rick.servicesapi.mo
import eu.iksproject.rick.servicesapi.query.QueryResultList;
final class QueryResultsToRDF {
-
- private QueryResultsToRDF() { /* do not create instances of utility classes */}
- static final UriRef queryResultList = new UriRef(RdfResourceEnum.QueryResultSet.getUri());
- static final UriRef queryResult = new UriRef(RdfResourceEnum.queryResult.getUri());
-
- static MGraph toRDF(QueryResultList<?> resultList){
- final MGraph resultGraph;
- Class<?> type = resultList.getType();
- if(String.class.isAssignableFrom(type)){
- resultGraph = new SimpleMGraph(); //create a new Graph
- for(Object result : resultList){
- //add a triple to each reference in the result set
- resultGraph.add(new TripleImpl(queryResultList, queryResult, new UriRef(result.toString())));
- }
- } else {
- //first determine the type of the resultList
- final boolean isSignType;
- if(Representation.class.isAssignableFrom(type)){
- isSignType = false;
- } else if(Representation.class.isAssignableFrom(type)){
- isSignType = true;
- } else {
- //incompatible type -> throw an Exception
- throw new IllegalArgumentException("Parsed type "+type+" is not supported");
- }
- //special treatment for RdfQueryResultList for increased performance
- if(resultList instanceof RdfQueryResultList){
- resultGraph = ((RdfQueryResultList)resultList).getResultGraph();
- if(isSignType){ //if we build a ResultList for Signs, that we need to do more things
- //first remove all triples representing results
- Iterator<Triple> resultTripleIt = resultGraph.filter(queryResultList, queryResult, null);
- while(resultTripleIt.hasNext()){
- resultTripleIt.next();
- resultTripleIt.remove();
- }
- //now add the Sign specific triples and add result triples
- //to the Sign IDs
- for(Object result: resultList){
- UriRef signId = new UriRef(((Sign)result).getId());
- SignToRDF.addSignTriplesToGraph(resultGraph, (Sign)result);
- resultGraph.add(new TripleImpl(queryResultList, queryResult, signId));
- }
- }
- } else { //any other implementation of the QueryResultList interface
- resultGraph = new SimpleMGraph(); //create a new graph
- if(Representation.class.isAssignableFrom(type)){
- for(Object result:resultList){
- UriRef resultId;
- if(!isSignType){
- SignToRDF.addRDFTo(resultGraph, (Representation)result);
- resultId = new UriRef(((Representation)result).getId());
- } else {
- SignToRDF.addRDFTo(resultGraph, (Sign)result);
- resultId = new UriRef(((Sign)result).getId());
- }
- //Note: In case of Representation this Triple points to
- // the representation. In case of Signs it points to
- // the sign.
- resultGraph.add(new TripleImpl(queryResultList, queryResult, resultId));
- }
- }
- }
- }
- return resultGraph;
- }
+ private QueryResultsToRDF() { /* do not create instances of utility classes */}
+
+ static final UriRef queryResultList = new UriRef(RdfResourceEnum.QueryResultSet.getUri());
+ static final UriRef queryResult = new UriRef(RdfResourceEnum.queryResult.getUri());
+
+ static MGraph toRDF(QueryResultList<?> resultList) {
+ final MGraph resultGraph;
+ Class<?> type = resultList.getType();
+ if (String.class.isAssignableFrom(type)) {
+ resultGraph = new SimpleMGraph(); //create a new Graph
+ for (Object result : resultList) {
+ //add a triple to each reference in the result set
+ resultGraph.add(new TripleImpl(queryResultList, queryResult, new UriRef(result.toString())));
+ }
+ } else {
+ //first determine the type of the resultList
+ final boolean isSignType;
+ if (Representation.class.isAssignableFrom(type)) {
+ isSignType = false;
+ } else if (Representation.class.isAssignableFrom(type)) {
+ isSignType = true;
+ } else {
+ //incompatible type -> throw an Exception
+ throw new IllegalArgumentException("Parsed type " + type + " is not supported");
+ }
+ //special treatment for RdfQueryResultList for increased performance
+ if (resultList instanceof RdfQueryResultList) {
+ resultGraph = ((RdfQueryResultList) resultList).getResultGraph();
+ if (isSignType) { //if we build a ResultList for Signs, that we need to do more things
+ //first remove all triples representing results
+ Iterator<Triple> resultTripleIt = resultGraph.filter(queryResultList, queryResult, null);
+ while (resultTripleIt.hasNext()) {
+ resultTripleIt.next();
+ resultTripleIt.remove();
+ }
+ //now add the Sign specific triples and add result triples
+ //to the Sign IDs
+ for (Object result : resultList) {
+ UriRef signId = new UriRef(((Sign) result).getId());
+ SignToRDF.addSignTriplesToGraph(resultGraph, (Sign) result);
+ resultGraph.add(new TripleImpl(queryResultList, queryResult, signId));
+ }
+ }
+ } else { //any other implementation of the QueryResultList interface
+ resultGraph = new SimpleMGraph(); //create a new graph
+ if (Representation.class.isAssignableFrom(type)) {
+ for (Object result : resultList) {
+ UriRef resultId;
+ if (!isSignType) {
+ SignToRDF.addRDFTo(resultGraph, (Representation) result);
+ resultId = new UriRef(((Representation) result).getId());
+ } else {
+ SignToRDF.addRDFTo(resultGraph, (Sign) result);
+ resultId = new UriRef(((Sign) result).getId());
+ }
+ //Note: In case of Representation this Triple points to
+ // the representation. In case of Signs it points to
+ // the sign.
+ resultGraph.add(new TripleImpl(queryResultList, queryResult, resultId));
+ }
+ }
+ }
+ }
+ return resultGraph;
+ }
}
Modified: incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignToJSON.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignToJSON.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignToJSON.java (original)
+++ incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignToJSON.java Sun Dec 12 15:13:35 2010
@@ -17,113 +17,117 @@ import eu.iksproject.rick.servicesapi.mo
final class SignToJSON {
- private SignToJSON() { /* do not create instances of utility classes */}
+ private SignToJSON() { /* do not create instances of utility classes */}
- static JSONObject toJSON(Sign sign) throws JSONException {
- JSONObject jSign;
- if(sign instanceof Symbol){
- jSign = writeSymbolAsJSON((Symbol)sign);
- } else if(sign instanceof EntityMapping){
- jSign = writeEntityMappingAsJSON((EntityMapping)sign);
- } else {
- jSign = convertSignToJSON(sign);
- }
- return jSign;
- }
-
- private static JSONObject writeSymbolAsJSON(Symbol symbol) throws JSONException {
- JSONObject jSymbol = convertSignToJSON(symbol);
- jSymbol.put("label", symbol.getLabel());
- Iterator<Text> descriptions = symbol.getDescriptions();
- if(descriptions.hasNext()){
- jSymbol.put("description", convertFieldValuesToJSON(descriptions));
- }
- Collection<String> value = ModelUtils.asCollection(symbol.getPredecessors());
- if(!value.isEmpty()){
- jSymbol.put("predecessors", value);
- }
- value= ModelUtils.asCollection(symbol.getSuccessors());
- if(!value.isEmpty()){
- jSymbol.put("successors", new JSONArray());
- }
- jSymbol.put("stateUri", symbol.getState().getUri());
- jSymbol.put("state", symbol.getState().name());
- return jSymbol;
- }
- private static JSONObject writeEntityMappingAsJSON(EntityMapping entityMapping) throws JSONException {
- JSONObject jEntityMapping = convertSignToJSON(entityMapping);
- jEntityMapping.put("symbol", entityMapping.getSymbolId());
- jEntityMapping.put("entity", entityMapping.getEntityId());
- jEntityMapping.put("stateUri", entityMapping.getState().getUri());
- jEntityMapping.put("state", entityMapping.getState().name());
- return jEntityMapping;
- }
-
-
- /**
- * @param sign
- * @return
- * @throws JSONException
- */
- private static JSONObject convertSignToJSON(Sign sign) throws JSONException {
- JSONObject jSign;
- jSign = new JSONObject();
- jSign.put("id", sign.getId());
- jSign.put("site", sign.getSignSite());
- Representation rep = sign.getRepresentation();
- jSign.put("representation", toJSON(rep));
- return jSign;
- }
-
- /**
- * Converts the {@link Representation} to JSON
- * @param jSign
- * @param rep
- * @throws JSONException
- */
- static JSONObject toJSON(Representation rep) throws JSONException {
- JSONObject jRep = new JSONObject();
- jRep.put("id", rep.getId());
- for(Iterator<String> fields = rep.getFieldNames();fields.hasNext();){
- String field = fields.next();
- Iterator<Object> values = rep.get(field);
- if(values.hasNext()){
- jRep.put(field, convertFieldValuesToJSON(values));
- }
- }
- return jRep;
- }
-
- /**
- * @param values Iterator over all the values to add
- * @return The {@link JSONArray} with all the values as {@link JSONObject}
- * @throws JSONException
- */
- private static JSONArray convertFieldValuesToJSON(Iterator<?> values) throws JSONException {
- JSONArray jValues = new JSONArray();
- while(values.hasNext()){
- jValues.put(convertFieldValueToJSON(values.next()));
- }
- return jValues;
- }
-
- /**
- * The value to write. Special support for {@link Reference} and {@link Text}.
- * The {@link #toString()} Method is used to write the "value" key.
- * @param value the value
- * @return the {@link JSONObject} representing the value
- * @throws JSONException
- */
- private static JSONObject convertFieldValueToJSON(Object value) throws JSONException {
- JSONObject jValue = new JSONObject();
- if(value instanceof Reference){
- jValue.put("type", "reference");
- } else if(value instanceof Text){
- jValue.put("type", "text");
- jValue.put("xml:lang", ((Text)value).getLanguage());
- } else {
- jValue.put("type", "value");//TODO: better name? ^^
- }
- jValue.put("value", value.toString());
- return jValue;
- }}
+ static JSONObject toJSON(Sign sign) throws JSONException {
+ JSONObject jSign;
+ if (sign instanceof Symbol) {
+ jSign = writeSymbolAsJSON((Symbol) sign);
+ } else if (sign instanceof EntityMapping) {
+ jSign = writeEntityMappingAsJSON((EntityMapping) sign);
+ } else {
+ jSign = convertSignToJSON(sign);
+ }
+ return jSign;
+ }
+
+ private static JSONObject writeSymbolAsJSON(Symbol symbol) throws JSONException {
+ JSONObject jSymbol = convertSignToJSON(symbol);
+ jSymbol.put("label", symbol.getLabel());
+ Iterator<Text> descriptions = symbol.getDescriptions();
+ if (descriptions.hasNext()) {
+ jSymbol.put("description", convertFieldValuesToJSON(descriptions));
+ }
+ Collection<String> value = ModelUtils.asCollection(symbol.getPredecessors());
+ if (!value.isEmpty()) {
+ jSymbol.put("predecessors", value);
+ }
+ value = ModelUtils.asCollection(symbol.getSuccessors());
+ if (!value.isEmpty()) {
+ jSymbol.put("successors", new JSONArray());
+ }
+ jSymbol.put("stateUri", symbol.getState().getUri());
+ jSymbol.put("state", symbol.getState().name());
+ return jSymbol;
+ }
+
+ private static JSONObject writeEntityMappingAsJSON(EntityMapping entityMapping) throws JSONException {
+ JSONObject jEntityMapping = convertSignToJSON(entityMapping);
+ jEntityMapping.put("symbol", entityMapping.getSymbolId());
+ jEntityMapping.put("entity", entityMapping.getEntityId());
+ jEntityMapping.put("stateUri", entityMapping.getState().getUri());
+ jEntityMapping.put("state", entityMapping.getState().name());
+ return jEntityMapping;
+ }
+
+
+ /**
+ * @param sign
+ * @return
+ * @throws JSONException
+ */
+ private static JSONObject convertSignToJSON(Sign sign) throws JSONException {
+ JSONObject jSign;
+ jSign = new JSONObject();
+ jSign.put("id", sign.getId());
+ jSign.put("site", sign.getSignSite());
+ Representation rep = sign.getRepresentation();
+ jSign.put("representation", toJSON(rep));
+ return jSign;
+ }
+
+ /**
+ * Converts the {@link Representation} to JSON
+ *
+ * @param jSign
+ * @param rep
+ * @throws JSONException
+ */
+ static JSONObject toJSON(Representation rep) throws JSONException {
+ JSONObject jRep = new JSONObject();
+ jRep.put("id", rep.getId());
+ for (Iterator<String> fields = rep.getFieldNames(); fields.hasNext();) {
+ String field = fields.next();
+ Iterator<Object> values = rep.get(field);
+ if (values.hasNext()) {
+ jRep.put(field, convertFieldValuesToJSON(values));
+ }
+ }
+ return jRep;
+ }
+
+ /**
+ * @param values Iterator over all the values to add
+ * @return The {@link JSONArray} with all the values as {@link JSONObject}
+ * @throws JSONException
+ */
+ private static JSONArray convertFieldValuesToJSON(Iterator<?> values) throws JSONException {
+ JSONArray jValues = new JSONArray();
+ while (values.hasNext()) {
+ jValues.put(convertFieldValueToJSON(values.next()));
+ }
+ return jValues;
+ }
+
+ /**
+ * The value to write. Special support for {@link Reference} and {@link Text}.
+ * The {@link #toString()} Method is used to write the "value" key.
+ *
+ * @param value the value
+ * @return the {@link JSONObject} representing the value
+ * @throws JSONException
+ */
+ private static JSONObject convertFieldValueToJSON(Object value) throws JSONException {
+ JSONObject jValue = new JSONObject();
+ if (value instanceof Reference) {
+ jValue.put("type", "reference");
+ } else if (value instanceof Text) {
+ jValue.put("type", "text");
+ jValue.put("xml:lang", ((Text) value).getLanguage());
+ } else {
+ jValue.put("type", "value");//TODO: better name? ^^
+ }
+ jValue.put("value", value.toString());
+ return jValue;
+ }
+}
Modified: incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignToRDF.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignToRDF.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignToRDF.java (original)
+++ incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignToRDF.java Sun Dec 12 15:13:35 2010
@@ -17,62 +17,67 @@ import eu.iksproject.rick.servicesapi.mo
import eu.iksproject.rick.servicesapi.model.rdf.RdfResourceEnum;
final class SignToRDF {
- private SignToRDF() { /* do not create instances of utility classes */}
+ private SignToRDF() { /* do not create instances of utility classes */}
+
+ static UriRef signRepresentation = new UriRef(RdfResourceEnum.signRepresentation.getUri());
+ static UriRef signSite = new UriRef(RdfResourceEnum.signSite.getUri());
+ static UriRef sign = new UriRef(RdfResourceEnum.Sign.getUri());
+ static UriRef entityMapping = new UriRef(RdfResourceEnum.EntityMapping.getUri());
+ static UriRef symbol = new UriRef(RdfResourceEnum.Symbol.getUri());
+ static RdfValueFactory valueFactory = RdfValueFactory.getInstance();
+ static LiteralFactory literalFactory = LiteralFactory.getInstance();
+
+ static MGraph toRDF(Representation representation) {
+ MGraph graph = new SimpleMGraph();
+ addRDFTo(graph, representation);
+ return graph;
+ }
+
+ static void addRDFTo(MGraph graph, Representation representation) {
+ graph.addAll(valueFactory.toRdfRepresentation(representation).getRdfGraph());
+ }
+
+ static TripleCollection toRDF(Sign sign) {
+ MGraph graph = new SimpleMGraph();
+ addRDFTo(graph, sign);
+ return graph;
+ }
+
+ static void addRDFTo(MGraph graph, Sign sign) {
+ addRDFTo(graph, sign.getRepresentation());
+ //now add some triples that represent the Sign
+ addSignTriplesToGraph(graph, sign);
+ }
+
+ /**
+ * Adds the Triples that represent the Sign to the parsed graph. Note that
+ * this method does not add triples for the representation. However it adds
+ * the triple (sign,singRepresentation,representation)
+ *
+ * @param graph the graph to add the triples
+ * @param sign the sign
+ */
+ static void addSignTriplesToGraph(MGraph graph, Sign sign) {
+ UriRef id = new UriRef(sign.getId());
+ UriRef repId = new UriRef(sign.getRepresentation().getId());
+ /*
+ * TODO: change to URI as soon as the paths are defined
+ * e.g:
+ * - Sign: <URLofRICK>/site/<sing.getSignSite>
+ * - Symbol: <URLofRICK>/symbol/<sing.getSignSite>
+ * - EntityMapping: <URLofRICK>/mapping/<sing.getSignSite>
+ * For now write a Literal with the ID of the Site
+ */
+ TypedLiteral siteName = literalFactory.createTypedLiteral(sign.getSignSite());
+ graph.add(new TripleImpl(id, SignToRDF.signSite, siteName));
+ graph.add(new TripleImpl(id, SignToRDF.signRepresentation, repId));
+ if (sign instanceof Symbol) {
+ graph.add(new TripleImpl(id, RDF.type, SignToRDF.symbol));
+ } else if (sign instanceof EntityMapping) {
+ graph.add(new TripleImpl(id, RDF.type, SignToRDF.entityMapping));
+ } else {
+ graph.add(new TripleImpl(id, RDF.type, SignToRDF.sign));
+ }
+ }
- static UriRef signRepresentation = new UriRef(RdfResourceEnum.signRepresentation.getUri());
- static UriRef signSite = new UriRef(RdfResourceEnum.signSite.getUri());
- static UriRef sign = new UriRef(RdfResourceEnum.Sign.getUri());
- static UriRef entityMapping = new UriRef(RdfResourceEnum.EntityMapping.getUri());
- static UriRef symbol = new UriRef(RdfResourceEnum.Symbol.getUri());
- static RdfValueFactory valueFactory = RdfValueFactory.getInstance();
- static LiteralFactory literalFactory = LiteralFactory.getInstance();
-
- static MGraph toRDF(Representation representation){
- MGraph graph = new SimpleMGraph();
- addRDFTo(graph, representation);
- return graph;
- }
- static void addRDFTo(MGraph graph,Representation representation){
- graph.addAll(valueFactory.toRdfRepresentation(representation).getRdfGraph());
- }
-
- static TripleCollection toRDF(Sign sign){
- MGraph graph = new SimpleMGraph();
- addRDFTo(graph, sign);
- return graph;
- }
- static void addRDFTo(MGraph graph, Sign sign){
- addRDFTo(graph,sign.getRepresentation());
- //now add some triples that represent the Sign
- addSignTriplesToGraph(graph, sign);
- }
- /**
- * Adds the Triples that represent the Sign to the parsed graph. Note that
- * this method does not add triples for the representation. However it adds
- * the triple (sign,singRepresentation,representation)
- * @param graph the graph to add the triples
- * @param sign the sign
- */
- static void addSignTriplesToGraph(MGraph graph, Sign sign) {
- UriRef id = new UriRef(sign.getId());
- UriRef repId = new UriRef(sign.getRepresentation().getId());
- /*
- * TODO: change to URI as soon as the paths are defined
- * e.g:
- * - Sign: <URLofRICK>/site/<sing.getSignSite>
- * - Symbol: <URLofRICK>/symbol/<sing.getSignSite>
- * - EntityMapping: <URLofRICK>/mapping/<sing.getSignSite>
- * For now write a Literal with the ID of the Site
- */
- TypedLiteral siteName = literalFactory.createTypedLiteral(sign.getSignSite());
- graph.add(new TripleImpl(id, SignToRDF.signSite, siteName));
- graph.add(new TripleImpl(id, SignToRDF.signRepresentation, repId));
- if(sign instanceof Symbol){
- graph.add(new TripleImpl(id, RDF.type, SignToRDF.symbol));
- } else if(sign instanceof EntityMapping){
- graph.add(new TripleImpl(id, RDF.type, SignToRDF.entityMapping));
- } else {
- graph.add(new TripleImpl(id, RDF.type, SignToRDF.sign));
- }
- }
}
Modified: incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignWriter.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignWriter.java (original)
+++ incubator/stanbol/trunk/rick/jersey/src/main/java/eu/iksproject/rick/jersey/writers/SignWriter.java Sun Dec 12 15:13:35 2010
@@ -31,60 +31,60 @@ import eu.iksproject.rick.servicesapi.mo
*
*/
@Provider
-@Produces({
- MediaType.APPLICATION_JSON,
- SupportedFormat.N3,
- SupportedFormat.N_TRIPLE,
+@Produces({
+ MediaType.APPLICATION_JSON,
+ SupportedFormat.N3,
+ SupportedFormat.N_TRIPLE,
SupportedFormat.RDF_XML,
- SupportedFormat.TURTLE,
+ SupportedFormat.TURTLE,
SupportedFormat.X_TURTLE,
SupportedFormat.RDF_JSON })
public class SignWriter implements MessageBodyWriter<Sign>{
- public static final Set<String> supportedMediaTypes;
- static {
- Set<String> types = new HashSet<String>();
- types.add(MediaType.APPLICATION_JSON);
- types.add(SupportedFormat.N3);
- types.add(SupportedFormat.N_TRIPLE);
- types.add(SupportedFormat.RDF_JSON);
- types.add(SupportedFormat.RDF_XML);
- types.add(SupportedFormat.TURTLE);
- types.add(SupportedFormat.X_TURTLE);
- supportedMediaTypes = Collections.unmodifiableSet(types);
- }
+ public static final Set<String> supportedMediaTypes;
+ static {
+ Set<String> types = new HashSet<String>();
+ types.add(MediaType.APPLICATION_JSON);
+ types.add(SupportedFormat.N3);
+ types.add(SupportedFormat.N_TRIPLE);
+ types.add(SupportedFormat.RDF_JSON);
+ types.add(SupportedFormat.RDF_XML);
+ types.add(SupportedFormat.TURTLE);
+ types.add(SupportedFormat.X_TURTLE);
+ supportedMediaTypes = Collections.unmodifiableSet(types);
+ }
@Context
protected ServletContext servletContext;
protected Serializer getSerializer() {
return (Serializer) servletContext.getAttribute(Serializer.class.getName());
}
- @Override
+ @Override
public long getSize(Sign Sign, Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
- return -1; //to hard to calculate
- }
+ return -1; //to hard to calculate
+ }
- @Override
+ @Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return Sign.class.isAssignableFrom(type) &&
- supportedMediaTypes.contains(mediaType.toString());
- }
+ return Sign.class.isAssignableFrom(type) &&
+ supportedMediaTypes.contains(mediaType.toString());
+ }
- @Override
- public void writeTo(Sign sign, Class<?> type, Type genericType,
- Annotation[] annotations, MediaType mediaType,
- MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
- throws IOException, WebApplicationException {
- if(mediaType == null || MediaType.APPLICATION_JSON.equals(mediaType.toString())){
- try {
- IOUtils.write(SignToJSON.toJSON(sign).toString(4), entityStream);
- } catch (JSONException e) {
- throw new WebApplicationException(e, Status.INTERNAL_SERVER_ERROR);
- }
- } else { //RDF
- getSerializer().serialize(entityStream, SignToRDF.toRDF(sign), mediaType.toString());
- }
- }
+ @Override
+ public void writeTo(Sign sign, Class<?> type, Type genericType,
+ Annotation[] annotations, MediaType mediaType,
+ MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+ throws IOException, WebApplicationException {
+ if(mediaType == null || MediaType.APPLICATION_JSON.equals(mediaType.toString())){
+ try {
+ IOUtils.write(SignToJSON.toJSON(sign).toString(4), entityStream);
+ } catch (JSONException e) {
+ throw new WebApplicationException(e, Status.INTERNAL_SERVER_ERROR);
+ }
+ } else { //RDF
+ getSerializer().serialize(entityStream, SignToRDF.toRDF(sign), mediaType.toString());
+ }
+ }
}
Modified: incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfReference.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfReference.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfReference.java (original)
+++ incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfReference.java Sun Dec 12 15:13:35 2010
@@ -1,5 +1,5 @@
/**
- *
+ *
*/
package eu.iksproject.rick.model.clerezza;
@@ -8,35 +8,35 @@ import org.apache.clerezza.rdf.core.UriR
import eu.iksproject.rick.servicesapi.model.Reference;
public class RdfReference implements Reference,Cloneable {
- private final UriRef uri;
- protected RdfReference(String reference){
- this.uri = new UriRef(reference);
- }
- protected RdfReference(UriRef uri){
- this.uri = uri;
- }
- @Override
- public String getReference() {
- return uri.getUnicodeString();
- }
- public UriRef getUriRef(){
- return uri;
- }
- @Override
- protected Object clone() throws CloneNotSupportedException {
- return new RdfReference(new UriRef(uri.getUnicodeString()));
- }
- @Override
- public int hashCode() {
- return uri.getUnicodeString().hashCode();
- }
- @Override
- public boolean equals(Object obj) {
- return obj != null &&obj instanceof Reference && uri.getUnicodeString().equals(((Reference)obj).getReference());
- }
- @Override
- public String toString() {
- return uri.getUnicodeString();
- }
-
-}
\ No newline at end of file
+ private final UriRef uri;
+ protected RdfReference(String reference){
+ this.uri = new UriRef(reference);
+ }
+ protected RdfReference(UriRef uri){
+ this.uri = uri;
+ }
+ @Override
+ public String getReference() {
+ return uri.getUnicodeString();
+ }
+ public UriRef getUriRef(){
+ return uri;
+ }
+ @Override
+ protected Object clone() throws CloneNotSupportedException {
+ return new RdfReference(new UriRef(uri.getUnicodeString()));
+ }
+ @Override
+ public int hashCode() {
+ return uri.getUnicodeString().hashCode();
+ }
+ @Override
+ public boolean equals(Object obj) {
+ return obj != null &&obj instanceof Reference && uri.getUnicodeString().equals(((Reference)obj).getReference());
+ }
+ @Override
+ public String toString() {
+ return uri.getUnicodeString();
+ }
+
+}
Modified: incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfRepresentation.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfRepresentation.java (original)
+++ incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfRepresentation.java Sun Dec 12 15:13:35 2010
@@ -33,330 +33,346 @@ import eu.iksproject.rick.servicesapi.mo
public class RdfRepresentation implements Representation{
- private static final Logger log = LoggerFactory.getLogger(RdfRepresentation.class);
-
- private static final UriRef REPRESENTATION_TYPE_PROPERTY = new UriRef(RdfResourceEnum.signType.getUri());
-
- private final RdfValueFactory valueFactory = RdfValueFactory.getInstance();
-
- private final GraphNode graphNode;
-
- protected final GraphNode getGraphNode() {
- return graphNode;
- }
-
- protected RdfRepresentation(UriRef resource, TripleCollection graph) {
- this.graphNode = new GraphNode(resource, graph);
- }
- /**
- * Getter for the read only view onto the RDF data of this representation
- * @return The RDF graph of this Representation
- */
- public TripleCollection getRdfGraph(){
- return graphNode.getGraph();
- }
-
- protected UriRef getRepresentationType(){
- Iterator<UriRef> it = this.graphNode.getUriRefObjects(REPRESENTATION_TYPE_PROPERTY);
- return it.hasNext()?it.next():null;
- }
- @Override
- public void add(String field, Object value) {
- if(field == null) {
- throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
- }
- if(value == null){
- log.warn("NULL parsed as value in add method for symbol "+getId()+" and field "+field+" -> call ignored");
- return;
- }
- UriRef fieldUriRef = new UriRef(field);
- Collection<Object> values = new ArrayList<Object>();
- //process the parsed value with the Utility Method ->
- // this converts Objects as defined in the specification
- ModelUtils.checkValues(valueFactory, value, values);
- //We still need to implement support for specific types supported by this implementation
- for(Object current : values){
- if(current instanceof Resource){ //native support for Clerezza types!
- graphNode.addProperty(fieldUriRef, (Resource)current);
- } else if(current instanceof RdfReference){
- //treat RDF Implementations special to avoid creating new instances
- graphNode.addProperty(fieldUriRef, ((RdfReference) current).getUriRef());
- } else if(current instanceof Reference){
- graphNode.addProperty(fieldUriRef, new UriRef(((Reference) current).getReference()));
- addReference(field,((Reference)current).getReference());
- } else if(current instanceof RdfText){
- //treat RDF Implementations special to avoid creating new instances
- graphNode.addProperty(fieldUriRef,((RdfText) current).getLiteral());
- } else if(current instanceof Text){
- addNaturalText(fieldUriRef, ((Text)current).getText(), ((Text)current).getLanguage());
- } else { //else add an typed Literal!
- addTypedLiteral(fieldUriRef, current);
- }
- }
- }
- private void addTypedLiteral(UriRef field, Object literalValue){
- Literal literal;
- try {
- literal = RdfResourceUtils.createLiteral(literalValue);
- } catch (NoConvertorException e){
- log.info("No Converter for value type "+literalValue.getClass()+" (parsed for field "+field+") use toString() to get String representation");
- literal = RdfResourceUtils.createLiteral(literalValue.toString(), null);
- }
- graphNode.addProperty(field, literal);
- }
- @Override
- public void addReference(String field, String reference) {
- if(field == null) {
- throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
- }
- if(reference == null){
- log.warn("NULL parsed as value in add method for symbol "+getId()+" and field "+field+" -> call ignored");
- }
- graphNode.addProperty(new UriRef(field), new UriRef(reference));
- }
- @Override
- public void addNaturalText(String field, String text, String...languages) {
- if(field == null) {
- throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
- }
- if(text == null){
- log.warn("NULL parsed as value in add method for symbol "+getId()+" and field "+field+" -> call ignored");
- }
- this.addNaturalText(new UriRef(field), text, languages);
- }
- private void addNaturalText(UriRef field, String text, String...languages) {
- if(languages == null){
- log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
- " -> assuming a missing explicit cast to (Stirng) in the var arg");
- languages = new String []{null};
- }
- for(String language : languages){
- graphNode.addProperty(field, RdfResourceUtils.createLiteral(text, language));
- }
- }
- @SuppressWarnings("unchecked")
- @Override
- public <T> Iterator<T> get(String field, final Class<T> type) throws UnsupportedTypeException {
- UriRef fieldUriRef = new UriRef(field);
- if(Resource.class.isAssignableFrom(type)){ //native support for Clerezza types
- return new TypeSaveIterator<T>(graphNode.getObjects(fieldUriRef), type);
- } else if(type.equals(String.class)){ //support to convert anything to String
- return (Iterator<T>) new AdaptingIterator<Resource,String>(
- graphNode.getObjects(fieldUriRef),
- new Resource2StringAdapter<Resource>(),
- String.class);
- } else if(type.equals(URI.class) || type.equals(URL.class)){ //support for References
- return new AdaptingIterator<UriRef, T>(
- graphNode.getUriRefObjects(fieldUriRef),
- new UriRefAdapter<T>(),
- type);
- } else if(Reference.class.isAssignableFrom(type)){
- return (Iterator<T>) new ReferenceIterator(
- graphNode.getUriRefObjects(fieldUriRef));
- } else if(Text.class.isAssignableFrom(type)){
- return (Iterator<T>)new AdaptingIterator<Literal, Text>(
- graphNode.getLiterals(fieldUriRef),
- new Literal2TextAdapter<Literal>(),
- Text.class);
- } else { //support for Literals -> Type conversions
- return new AdaptingIterator<Literal, T>(
- graphNode.getLiterals(fieldUriRef),
- new LiteralAdapter<Literal, T>(),
- type);
- }
- }
-
- @Override
- public Iterator<Reference> getReferences(String field) {
- Iterator<UriRef> it = graphNode.getUriRefObjects(new UriRef(field));
- return new ReferenceIterator(it);
- }
-
- @Override
- public Iterator<Text> getText(String field) {
- return new AdaptingIterator<Literal, Text>(
- graphNode.getLiterals(new UriRef(field)),
- new Literal2TextAdapter<Literal>(),
- Text.class);
- }
- @Override
- public Iterator<Object> get(String field) {
- return new AdaptingIterator<Resource, Object>(graphNode.getObjects(new UriRef(field)),
- new Resource2ValueAdapter<Resource>(),Object.class);
- }
- @Override
- public Iterator<Text> get(String field, String...languages) {
- if(languages == null){
- log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
- " -> assuming a missing explicit cast to (Stirng) in the var arg");
- languages = new String []{null};
- }
- return new AdaptingIterator<Literal, Text>(
- graphNode.getLiterals(new UriRef(field)),
- new Literal2TextAdapter<Literal>(languages),
- Text.class);
- }
- @Override
- public Iterator<String> getFieldNames() {
- return new AdaptingIterator<UriRef, String>(graphNode.getProperties(),
- new Resource2StringAdapter<UriRef>(), String.class);
- }
-
- @Override
- public <T> T getFirst(String field, Class<T> type) throws UnsupportedTypeException {
- Iterator<T> it = get(field,type);
- if(it.hasNext()){
- return it.next();
- } else {
- return null;
- }
- }
-
- @Override
- public Object getFirst(String field) {
- Iterator<Object> it = get(field);
- if(it.hasNext()){
- return it.next();
- } else {
- return null;
- }
- }
- @Override
- public Reference getFirstReference(String field) {
- Iterator<Reference> it = getReferences(field);
- return it.hasNext()?it.next():null;
- }
- @Override
- public Text getFirst(String field, String...languages) {
- if(languages == null){
- log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
- " -> assuming a missing explicit cast to (Stirng) in the var arg");
- languages = new String []{null};
- }
- Iterator<Text> it = get(field,languages);
- if(it.hasNext()){
- return it.next();
- } else {
- return null;
- }
- }
- @Override
- public String getId() {
- return ((UriRef)graphNode.getNode()).getUnicodeString();
- }
-
- @Override
- public void remove(String field, Object value) {
- if(field == null) {
- throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
- }
- if(value == null){
- log.warn("NULL parsed as value in remove method for symbol "+getId()+" and field "+field+" -> call ignored");
- }
- UriRef fieldUriRef = new UriRef(field);
- if(value instanceof Resource){ //native support for Clerezza types!
- graphNode.deleteProperty(fieldUriRef, (Resource)value);
- } else if(value instanceof URI || value instanceof URL){
- removeReference(field, value.toString());
- } else if (value instanceof String[]){
- if(((String[])value).length>0){
- if(((String[])value).length>1){
- removeNaturalText(field, ((String[])value)[0],((String[])value)[1]);
- } else {
- removeNaturalText(field, ((String[])value)[0],(String)null);
- }
- }
- } else {
- removeTypedLiteral(fieldUriRef, value);
- }
-
- }
-
- @Override
- public void removeReference(String field, String reference) {
- if(field == null) {
- throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
- }
- if(reference == null){
- log.warn("NULL parsed as value in remove method for symbol "+getId()+" and field "+field+" -> call ignored");
- }
- graphNode.deleteProperty(new UriRef(field), new UriRef(reference));
- }
- protected void removeTypedLiteral(UriRef field, Object object){
- Literal literal;
- try{
- literal = RdfResourceUtils.createLiteral(object);
- } catch (NoConvertorException e){
- log.info("No Converter for value type "+object.getClass()+" (parsed for field "+field+") use toString() Method to get String representation");
- literal = RdfResourceUtils.createLiteral(object.toString(), null);
- }
- graphNode.deleteProperty(field,literal);
- }
- @Override
- public void removeNaturalText(String field, String value, String... languages) {
- if(field == null) {
- throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
- }
- if(value == null){
- log.warn("NULL parsed as value in remove method for symbol "+getId()+" and field "+field+" -> call ignored");
- }
- if(languages == null){
- log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
- " -> assuming a missing explicit cast to (Stirng) in the var arg");
- languages = new String []{null};
- }
- UriRef fieldUriRef = new UriRef(field);
- for(String language : languages){
- graphNode.deleteProperty(fieldUriRef,RdfResourceUtils.createLiteral(value, language));
- }
- }
- @Override
- public void removeAll(String field) {
- graphNode.deleteProperties(new UriRef(field));
- }
- @Override
- public void removeAllNaturalText(String field, String... languages) {
- if(field == null) {
- throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
- }
- if(languages == null){
- log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
- " -> assuming a missing explicit cast to (Stirng) in the var arg");
- languages = new String []{null};
- }
- UriRef fieldUriRef = new UriRef(field);
- Collection<Literal> literals = new ArrayList<Literal>();
- //get all the affected Literals
- for(Iterator<Literal> it = new NaturalLanguageLiteralIterator(graphNode.getLiterals(fieldUriRef), languages);
- it.hasNext();
- literals.add(it.next())
- );
- //delete the found literals
- for(Literal literal:literals){
- graphNode.deleteProperty(fieldUriRef, literal);
- }
-
- }
- @Override
- public void set(String field, Object value) {
- removeAll(field);
- if(value != null){
- add(field,value);
- }
- }
- @Override
- public void setReference(String field, String reference) {
- removeAll(reference);
- if(reference != null){
- addReference(field, reference);
- }
- }
- @Override
- public void setNaturalText(String field, String text, String...languages) {
- removeAllNaturalText(field, languages);
- if(text != null){
- addNaturalText(field, text, languages);
- }
- }
+ private static final Logger log = LoggerFactory.getLogger(RdfRepresentation.class);
+
+ private static final UriRef REPRESENTATION_TYPE_PROPERTY = new UriRef(RdfResourceEnum.signType.getUri());
+
+ private final RdfValueFactory valueFactory = RdfValueFactory.getInstance();
+
+ private final GraphNode graphNode;
+
+ protected final GraphNode getGraphNode() {
+ return graphNode;
+ }
+
+ protected RdfRepresentation(UriRef resource, TripleCollection graph) {
+ this.graphNode = new GraphNode(resource, graph);
+ }
+
+ /**
+ * Getter for the read only view onto the RDF data of this representation.
+ *
+ * @return The RDF graph of this Representation
+ */
+ public TripleCollection getRdfGraph(){
+ return graphNode.getGraph();
+ }
+
+ protected UriRef getRepresentationType(){
+ Iterator<UriRef> it = this.graphNode.getUriRefObjects(REPRESENTATION_TYPE_PROPERTY);
+ return it.hasNext()?it.next():null;
+ }
+ @Override
+ public void add(String field, Object value) {
+ if(field == null) {
+ throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
+ }
+ if(value == null){
+ log.warn("NULL parsed as value in add method for symbol "+getId()
+ +" and field "+field+" -> call ignored");
+ return;
+ }
+ UriRef fieldUriRef = new UriRef(field);
+ Collection<Object> values = new ArrayList<Object>();
+ //process the parsed value with the Utility Method ->
+ // this converts Objects as defined in the specification
+ ModelUtils.checkValues(valueFactory, value, values);
+ //We still need to implement support for specific types supported by this implementation
+ for (Object current : values){
+ if (current instanceof Resource){ //native support for Clerezza types!
+ graphNode.addProperty(fieldUriRef, (Resource)current);
+ } else if (current instanceof RdfReference){
+ //treat RDF Implementations special to avoid creating new instances
+ graphNode.addProperty(fieldUriRef, ((RdfReference) current).getUriRef());
+ } else if (current instanceof Reference){
+ graphNode.addProperty(fieldUriRef, new UriRef(((Reference) current).getReference()));
+ addReference(field,((Reference)current).getReference());
+ } else if (current instanceof RdfText){
+ //treat RDF Implementations special to avoid creating new instances
+ graphNode.addProperty(fieldUriRef,((RdfText) current).getLiteral());
+ } else if (current instanceof Text){
+ addNaturalText(fieldUriRef, ((Text)current).getText(), ((Text)current).getLanguage());
+ } else { //else add an typed Literal!
+ addTypedLiteral(fieldUriRef, current);
+ }
+ }
+ }
+
+ private void addTypedLiteral(UriRef field, Object literalValue){
+ Literal literal;
+ try {
+ literal = RdfResourceUtils.createLiteral(literalValue);
+ } catch (NoConvertorException e){
+ log.info("No Converter for value type "+literalValue.getClass()
+ +" (parsed for field "+field+") use toString() to get String representation");
+ literal = RdfResourceUtils.createLiteral(literalValue.toString(), null);
+ }
+ graphNode.addProperty(field, literal);
+ }
+ @Override
+ public void addReference(String field, String reference) {
+ if(field == null) {
+ throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
+ }
+ if(reference == null){
+ log.warn("NULL parsed as value in add method for symbol "+getId()
+ +" and field "+field+" -> call ignored");
+ }
+ graphNode.addProperty(new UriRef(field), new UriRef(reference));
+ }
+ @Override
+ public void addNaturalText(String field, String text, String...languages) {
+ if(field == null) {
+ throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
+ }
+ if(text == null){
+ log.warn("NULL parsed as value in add method for symbol "+getId()
+ +" and field "+field+" -> call ignored");
+ }
+ this.addNaturalText(new UriRef(field), text, languages);
+ }
+ private void addNaturalText(UriRef field, String text, String...languages) {
+ if(languages == null){
+ log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
+ " -> assuming a missing explicit cast to (Stirng) in the var arg");
+ languages = new String []{null};
+ }
+ for(String language : languages){
+ graphNode.addProperty(field, RdfResourceUtils.createLiteral(text, language));
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> Iterator<T> get(String field, final Class<T> type) throws UnsupportedTypeException {
+ UriRef fieldUriRef = new UriRef(field);
+ if(Resource.class.isAssignableFrom(type)){ //native support for Clerezza types
+ return new TypeSaveIterator<T>(graphNode.getObjects(fieldUriRef), type);
+ } else if(type.equals(String.class)){ //support to convert anything to String
+ return (Iterator<T>) new AdaptingIterator<Resource,String>(
+ graphNode.getObjects(fieldUriRef),
+ new Resource2StringAdapter<Resource>(),
+ String.class);
+ } else if(type.equals(URI.class) || type.equals(URL.class)){ //support for References
+ return new AdaptingIterator<UriRef, T>(
+ graphNode.getUriRefObjects(fieldUriRef),
+ new UriRefAdapter<T>(),
+ type);
+ } else if(Reference.class.isAssignableFrom(type)){
+ return (Iterator<T>) new ReferenceIterator(
+ graphNode.getUriRefObjects(fieldUriRef));
+ } else if(Text.class.isAssignableFrom(type)){
+ return (Iterator<T>)new AdaptingIterator<Literal, Text>(
+ graphNode.getLiterals(fieldUriRef),
+ new Literal2TextAdapter<Literal>(),
+ Text.class);
+ } else { //support for Literals -> Type conversions
+ return new AdaptingIterator<Literal, T>(
+ graphNode.getLiterals(fieldUriRef),
+ new LiteralAdapter<Literal, T>(),
+ type);
+ }
+ }
+
+ @Override
+ public Iterator<Reference> getReferences(String field) {
+ Iterator<UriRef> it = graphNode.getUriRefObjects(new UriRef(field));
+ return new ReferenceIterator(it);
+ }
+
+ @Override
+ public Iterator<Text> getText(String field) {
+ return new AdaptingIterator<Literal, Text>(
+ graphNode.getLiterals(new UriRef(field)),
+ new Literal2TextAdapter<Literal>(),
+ Text.class);
+ }
+
+ @Override
+ public Iterator<Object> get(String field) {
+ return new AdaptingIterator<Resource, Object>(graphNode.getObjects(new UriRef(field)),
+ new Resource2ValueAdapter<Resource>(),Object.class);
+ }
+
+ @Override
+ public Iterator<Text> get(String field, String...languages) {
+ if(languages == null){
+ log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
+ " -> assuming a missing explicit cast to (String) in the var arg");
+ languages = new String []{null};
+ }
+ return new AdaptingIterator<Literal, Text>(
+ graphNode.getLiterals(new UriRef(field)),
+ new Literal2TextAdapter<Literal>(languages),
+ Text.class);
+ }
+
+ @Override
+ public Iterator<String> getFieldNames() {
+ return new AdaptingIterator<UriRef, String>(graphNode.getProperties(),
+ new Resource2StringAdapter<UriRef>(), String.class);
+ }
+
+ @Override
+ public <T> T getFirst(String field, Class<T> type) throws UnsupportedTypeException {
+ Iterator<T> it = get(field,type);
+ if(it.hasNext()){
+ return it.next();
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public Object getFirst(String field) {
+ Iterator<Object> it = get(field);
+ if(it.hasNext()){
+ return it.next();
+ } else {
+ return null;
+ }
+ }
+ @Override
+ public Reference getFirstReference(String field) {
+ Iterator<Reference> it = getReferences(field);
+ return it.hasNext()?it.next():null;
+ }
+ @Override
+ public Text getFirst(String field, String...languages) {
+ if(languages == null){
+ log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
+ " -> assuming a missing explicit cast to (String) in the var arg");
+ languages = new String []{null};
+ }
+ Iterator<Text> it = get(field,languages);
+ if(it.hasNext()){
+ return it.next();
+ } else {
+ return null;
+ }
+ }
+ @Override
+ public String getId() {
+ return ((UriRef)graphNode.getNode()).getUnicodeString();
+ }
+
+ @Override
+ public void remove(String field, Object value) {
+ if(field == null) {
+ throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
+ }
+ if(value == null){
+ log.warn("NULL parsed as value in remove method for symbol "+getId()
+ +" and field "+field+" -> call ignored");
+ }
+ UriRef fieldUriRef = new UriRef(field);
+ if(value instanceof Resource){ //native support for Clerezza types!
+ graphNode.deleteProperty(fieldUriRef, (Resource)value);
+ } else if(value instanceof URI || value instanceof URL){
+ removeReference(field, value.toString());
+ } else if (value instanceof String[]){
+ if(((String[])value).length>0){
+ if(((String[])value).length>1){
+ removeNaturalText(field, ((String[])value)[0],((String[])value)[1]);
+ } else {
+ removeNaturalText(field, ((String[])value)[0],(String)null);
+ }
+ }
+ } else {
+ removeTypedLiteral(fieldUriRef, value);
+ }
+
+ }
+
+ @Override
+ public void removeReference(String field, String reference) {
+ if(field == null) {
+ throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
+ }
+ if(reference == null){
+ log.warn("NULL parsed as value in remove method for symbol "+getId()+" and field "+field+" -> call ignored");
+ }
+ graphNode.deleteProperty(new UriRef(field), new UriRef(reference));
+ }
+ protected void removeTypedLiteral(UriRef field, Object object){
+ Literal literal;
+ try{
+ literal = RdfResourceUtils.createLiteral(object);
+ } catch (NoConvertorException e){
+ log.info("No Converter for value type "+object.getClass()
+ +" (parsed for field "+field+") use toString() Method to get String representation");
+ literal = RdfResourceUtils.createLiteral(object.toString(), null);
+ }
+ graphNode.deleteProperty(field,literal);
+ }
+ @Override
+ public void removeNaturalText(String field, String value, String... languages) {
+ if(field == null) {
+ throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
+ }
+ if(value == null){
+ log.warn("NULL parsed as value in remove method for symbol "+getId()+" and field "+field+" -> call ignored");
+ }
+ if(languages == null){
+ log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
+ " -> assuming a missing explicit cast to (Stirng) in the var arg");
+ languages = new String []{null};
+ }
+ UriRef fieldUriRef = new UriRef(field);
+ for(String language : languages){
+ graphNode.deleteProperty(fieldUriRef,RdfResourceUtils.createLiteral(value, language));
+ }
+ }
+ @Override
+ public void removeAll(String field) {
+ graphNode.deleteProperties(new UriRef(field));
+ }
+ @Override
+ public void removeAllNaturalText(String field, String... languages) {
+ if(field == null) {
+ throw new IllegalArgumentException("Parameter \"String field\" MUST NOT be NULL!");
+ }
+ if(languages == null){
+ log.debug("NULL parsed as languages -> replacing with \"new String []{null}\"" +
+ " -> assuming a missing explicit cast to (Stirng) in the var arg");
+ languages = new String []{null};
+ }
+ UriRef fieldUriRef = new UriRef(field);
+ Collection<Literal> literals = new ArrayList<Literal>();
+ //get all the affected Literals
+ for (Iterator<Literal> it = new NaturalLanguageLiteralIterator(graphNode.getLiterals(fieldUriRef), languages);
+ it.hasNext();
+ literals.add(it.next())
+ );
+ //delete the found literals
+ for(Literal literal:literals){
+ graphNode.deleteProperty(fieldUriRef, literal);
+ }
+
+ }
+
+ @Override
+ public void set(String field, Object value) {
+ removeAll(field);
+ if(value != null){
+ add(field,value);
+ }
+ }
+
+ @Override
+ public void setReference(String field, String reference) {
+ removeAll(reference);
+ if(reference != null){
+ addReference(field, reference);
+ }
+ }
+
+ @Override
+ public void setNaturalText(String field, String text, String...languages) {
+ removeAllNaturalText(field, languages);
+ if(text != null){
+ addNaturalText(field, text, languages);
+ }
+ }
}
Modified: incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfResourceUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfResourceUtils.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfResourceUtils.java (original)
+++ incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfResourceUtils.java Sun Dec 12 15:13:35 2010
@@ -31,184 +31,201 @@ import eu.iksproject.rick.servicesapi.de
*
*/
public class RdfResourceUtils {
-
- private RdfResourceUtils(){/*do not create instances of Util Classes*/}
- /**
- * Defines Mappings for the DataTypes supported by the Clerezza {@link SimpleLiteralFactory}.
- * If a xsd data type is mapped to <code>null</code> the string representation
- * should be returnd as String (bypassing the {@link LiteralFactory})
- * TODO Replace this code with our own implementation of the {@link LiteralFactory}
- * and implement mappings for all DataTypes in {@link DataTypeEnum}
- * (Rupert Westenthaler, 2010-11-12)
- * @author Rupert Westenthaler
- */
- public static enum XsdDataTypeEnum {
- //NOTE: Commented lines are not supported by org.apache.clerezza.rdf.core.impl.SimpleLiteralFactory
- // see http://svn.apache.org/repos/asf/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/SimpleLiteralFactory.java
- Boolean("boolean",Boolean.class),
- //Decimal("decimeal"),
- Integer("integer",Long.class),
- Int("int",Integer.class),
- Short("short",Integer.class),
- Byte("byte",Integer.class),
- //Float("float",Double.class),
- Double("double",Double.class),
- Base64Binary("base64Binary",new byte[0].getClass()),
- DateTime("dateTime",Date.class),
- //Date("date"),
- //Time("time"),
- AnyUri("anyUri",null),
- //QName("qName"),
- //Duration("duration"),
- //GYearMonth("gYearMonth"),
- //GYear("gYear"),
- //GMonthDay("gMonthDay"),
- //GDay("gDay"),
- //GMonth("gMonth"),
- //hexBinary("hexBinary"),
- //NOTATION("NOTATION"),
- String("string",String.class),
- ;
- private static final String ns = "http://www.w3.org/2001/XMLSchema#";
- private String uri;
- private Class<?> clazz;
- XsdDataTypeEnum(String localName,Class<?> clazz){
- this.uri = ns+localName;
- this.clazz = clazz;
- }
- public String getUri(){
- return uri;
- }
- @Override
- public String toString() {
- return uri;
- }
- public Class<?> getMappedClass(){
- return clazz;
- }
- }
- /**
- * Unmodifiable map containing the supported xsd data type mappings as defined
- * by the {@link XsdDataTypeEnum}.
- */
- public static final Map<UriRef,XsdDataTypeEnum> XSD_DATATYPE_VALUE_MAPPING;
- /**
- * Unmodifiable containing all xsd data types that can be converted to
- * {@link Text} (without language).
- */
- public static final Set<UriRef> STRING_DATATYPES;
- public static final Map<Class<?>,XsdDataTypeEnum> JAVA_OBJECT_XSD_DATATYPE_MAPPING;
- static {
- Map<UriRef,XsdDataTypeEnum> dataTypeMappings = new HashMap<UriRef, XsdDataTypeEnum>();
- Map<Class<?>,XsdDataTypeEnum> objectMappings = new HashMap<Class<?>, XsdDataTypeEnum>();
- Set<UriRef> stringDataTypes = new HashSet<UriRef>();
- stringDataTypes.add(null);//map missing dataTypes to String
- for(XsdDataTypeEnum mapping : XsdDataTypeEnum.values()){
- UriRef uri = new UriRef(mapping.getUri());
- dataTypeMappings.put(uri,mapping);
- if(mapping.getMappedClass() != null && String.class.isAssignableFrom(mapping.getMappedClass())){
- stringDataTypes.add(uri);
- }
- if(mapping.getMappedClass() != null){
- objectMappings.put(mapping.getMappedClass(), mapping);
- }
- }
- XSD_DATATYPE_VALUE_MAPPING = Collections.unmodifiableMap(dataTypeMappings);
- STRING_DATATYPES = Collections.unmodifiableSet(stringDataTypes);
- JAVA_OBJECT_XSD_DATATYPE_MAPPING = Collections.unmodifiableMap(objectMappings);
- }
-
- private static final Logger log = LoggerFactory.getLogger(RdfResourceUtils.class);
- private static final LiteralFactory literalFactory = LiteralFactory.getInstance();
- /**
- * Creates a {@link Language} instance based on the parsed language string.
- * @param lang the language (<code>null</code> is supported)
- * @return the {@link Language} or <code>null</code> if <code>null</code>
- * was parsed as language.
- */
- public static Language getLanguage(String lang) {
- final Language parsedLanguage;
- if(lang != null && lang.length()>0){
- parsedLanguage = new Language(lang);
- } else {
- parsedLanguage = null;
- }
- return parsedLanguage;
- }
- /**
- * Extracts the literal values for {@link Literal} instances
- * @param literals the Iterator holding the literals
- * @return The collection with the literal values
- */
- public static Collection<String> getLiteralValues(Iterator<Literal> literals){
- Collection<String> results = new ArrayList<String>();
- while(literals.hasNext()){
- Literal act = literals.next();
- results.add(act.getLexicalForm());
- }
- return results;
- }
- /**
- * Extracts the literal values for the given list of languages (<code>null</code>
- * is supported).<br>
- * Multiple languages are supported by this method to allow parsing
- * <code>null</code> in addition to a language. This is often used by applications
- * to search for literals in a given language in addition to literals with no
- * defined language.<br>
- * As a convenience this methods adds literals with a language tag to the
- * front of the list and literals with no language tag to the end.
- * @param literals the iterator over the literals
- * @param languages the array of languages (<code>null</code> is supported).
- * @return The collection with all the literal values.
- */
- public static List<String> getLiteralValues(Iterator<Literal> literals,String... languages){
- Set<Language> languageSet = new HashSet<Language>();//permits null element!
- for(String lang:languages){
- languageSet.add(getLanguage(lang));
- }
- boolean containsNull = languageSet.contains(null);
- List<String> results = new ArrayList<String>();
- while(literals.hasNext()){
- Literal act = literals.next();
- if(act instanceof PlainLiteral){
- PlainLiteral pl = (PlainLiteral)act;
- if(languageSet.contains(pl.getLanguage())){
- results.add(0,pl.getLexicalForm()); //add to front
- }
- } else if(containsNull){ //add also all types Literals, because the do not define an language!
- results.add(act.getLexicalForm()); //append to the end
- }
- }
- return results;
- }
- /**
- * Extracts the unicode representation of URIs
- * @param uriRefObjects iterator over URIs
- * @return the unicode representation
- */
- public static Collection<String> getUriRefValues(Iterator<UriRef> uriRefObjects) {
- Collection<String> results = new ArrayList<String>();
- while(uriRefObjects.hasNext()){
- results.add(uriRefObjects.next().getUnicodeString());
- }
- return results;
- }
- /**
- * Creates a {@link PlainLiteral} for the given literal value and language.
- * This method creates an instance of {@link PlainLiteralImpl}.<br>
- * TODO: It would be better to use something like the {@link LiteralFactory}
- * to create {@link PlainLiteral} instances. However it seams there is no
- * such functionality present.
- * @param literalValue the value of the literal
- * @param lang the language of the literal
- * @return the Literal
- */
- public static PlainLiteral createLiteral(String literalValue, String lang) {
- return new PlainLiteralImpl(literalValue,
- (lang != null && lang.length()>0)?new Language(lang):null);
- }
- public static TypedLiteral createLiteral(Object object){
- return literalFactory.createTypedLiteral(object);
- }
+
+ private RdfResourceUtils(){/*do not create instances of Util Classes*/}
+ /**
+ * Defines Mappings for the DataTypes supported by the Clerezza {@link SimpleLiteralFactory}.
+ * If a xsd data type is mapped to <code>null</code> the string representation
+ * should be returnd as String (bypassing the {@link LiteralFactory})
+ * TODO Replace this code with our own implementation of the {@link LiteralFactory}
+ * and implement mappings for all DataTypes in {@link DataTypeEnum}
+ * (Rupert Westenthaler, 2010-11-12)
+ * @author Rupert Westenthaler
+ */
+ public static enum XsdDataTypeEnum {
+ //NOTE: Commented lines are not supported by org.apache.clerezza.rdf.core.impl.SimpleLiteralFactory
+ // see http://svn.apache.org/repos/asf/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/SimpleLiteralFactory.java
+ Boolean("boolean",Boolean.class),
+ //Decimal("decimeal"),
+ Integer("integer",Long.class),
+ Int("int",Integer.class),
+ Short("short",Integer.class),
+ Byte("byte",Integer.class),
+ //Float("float",Double.class),
+ Double("double",Double.class),
+ Base64Binary("base64Binary",new byte[0].getClass()),
+ DateTime("dateTime",Date.class),
+ //Date("date"),
+ //Time("time"),
+ AnyUri("anyUri",null),
+ //QName("qName"),
+ //Duration("duration"),
+ //GYearMonth("gYearMonth"),
+ //GYear("gYear"),
+ //GMonthDay("gMonthDay"),
+ //GDay("gDay"),
+ //GMonth("gMonth"),
+ //hexBinary("hexBinary"),
+ //NOTATION("NOTATION"),
+ String("string",String.class),
+ ;
+ private static final String ns = "http://www.w3.org/2001/XMLSchema#";
+ private String uri;
+ private Class<?> clazz;
+ XsdDataTypeEnum(String localName,Class<?> clazz){
+ this.uri = ns+localName;
+ this.clazz = clazz;
+ }
+ public String getUri(){
+ return uri;
+ }
+ @Override
+ public String toString() {
+ return uri;
+ }
+ public Class<?> getMappedClass(){
+ return clazz;
+ }
+ }
+
+ /**
+ * Unmodifiable map containing the supported xsd data type mappings as defined
+ * by the {@link XsdDataTypeEnum}.
+ */
+
+ public static final Map<UriRef, XsdDataTypeEnum> XSD_DATATYPE_VALUE_MAPPING;
+ /**
+ * Unmodifiable containing all xsd data types that can be converted to
+ * {@link Text} (without language).
+ */
+ public static final Set<UriRef> STRING_DATATYPES;
+
+ public static final Map<Class<?>, XsdDataTypeEnum> JAVA_OBJECT_XSD_DATATYPE_MAPPING;
+ static {
+ Map<UriRef,XsdDataTypeEnum> dataTypeMappings = new HashMap<UriRef, XsdDataTypeEnum>();
+ Map<Class<?>,XsdDataTypeEnum> objectMappings = new HashMap<Class<?>, XsdDataTypeEnum>();
+ Set<UriRef> stringDataTypes = new HashSet<UriRef>();
+ stringDataTypes.add(null);//map missing dataTypes to String
+ for(XsdDataTypeEnum mapping : XsdDataTypeEnum.values()){
+ UriRef uri = new UriRef(mapping.getUri());
+ dataTypeMappings.put(uri,mapping);
+ if(mapping.getMappedClass() != null && String.class.isAssignableFrom(mapping.getMappedClass())){
+ stringDataTypes.add(uri);
+ }
+ if(mapping.getMappedClass() != null){
+ objectMappings.put(mapping.getMappedClass(), mapping);
+ }
+ }
+ XSD_DATATYPE_VALUE_MAPPING = Collections.unmodifiableMap(dataTypeMappings);
+ STRING_DATATYPES = Collections.unmodifiableSet(stringDataTypes);
+ JAVA_OBJECT_XSD_DATATYPE_MAPPING = Collections.unmodifiableMap(objectMappings);
+ }
+
+ private static final Logger log = LoggerFactory.getLogger(RdfResourceUtils.class);
+
+ private static final LiteralFactory literalFactory = LiteralFactory.getInstance();
+
+ /**
+ * Creates a {@link Language} instance based on the parsed language string.
+ *
+ * @param lang the language (<code>null</code> is supported)
+ * @return the {@link Language} or <code>null</code> if <code>null</code>
+ * was parsed as language.
+ */
+ public static Language getLanguage(String lang) {
+ final Language parsedLanguage;
+ if(lang != null && lang.length()>0){
+ parsedLanguage = new Language(lang);
+ } else {
+ parsedLanguage = null;
+ }
+ return parsedLanguage;
+ }
+
+ /**
+ * Extracts the literal values for {@link Literal} instances.
+ *
+ * @param literals the Iterator holding the literals
+ * @return The collection with the literal values
+ */
+ public static Collection<String> getLiteralValues(Iterator<Literal> literals){
+ Collection<String> results = new ArrayList<String>();
+ while(literals.hasNext()){
+ Literal act = literals.next();
+ results.add(act.getLexicalForm());
+ }
+ return results;
+ }
+
+ /**
+ * Extracts the literal values for the given list of languages (<code>null</code>
+ * is supported).
+ * <p>
+ * Multiple languages are supported by this method to allow parsing
+ * <code>null</code> in addition to a language. This is often used by applications
+ * to search for literals in a given language in addition to literals with no
+ * defined language.
+ * <p>
+ * As a convenience this methods adds literals with a language tag to the
+ * front of the list and literals with no language tag to the end.
+ *
+ * @param literals the iterator over the literals
+ * @param languages the array of languages (<code>null</code> is supported).
+ * @return The collection with all the literal values.
+ */
+ public static List<String> getLiteralValues(Iterator<Literal> literals, String... languages) {
+ Set<Language> languageSet = new HashSet<Language>();//permits null element!
+ for (String lang : languages) {
+ languageSet.add(getLanguage(lang));
+ }
+ boolean containsNull = languageSet.contains(null);
+ List<String> results = new ArrayList<String>();
+ while (literals.hasNext()) {
+ Literal act = literals.next();
+ if (act instanceof PlainLiteral) {
+ PlainLiteral pl = (PlainLiteral) act;
+ if (languageSet.contains(pl.getLanguage())) {
+ results.add(0, pl.getLexicalForm()); //add to front
+ }
+ } else if (containsNull) { //add also all types Literals, because the do not define an language!
+ results.add(act.getLexicalForm()); //append to the end
+ }
+ }
+ return results;
+ }
+
+ /**
+ * Extracts the unicode representation of URIs.
+ *
+ * @param uriRefObjects iterator over URIs
+ * @return the unicode representation
+ */
+ public static Collection<String> getUriRefValues(Iterator<UriRef> uriRefObjects) {
+ Collection<String> results = new ArrayList<String>();
+ while (uriRefObjects.hasNext()) {
+ results.add(uriRefObjects.next().getUnicodeString());
+ }
+ return results;
+ }
+
+ /**
+ * Creates a {@link PlainLiteral} for the given literal value and language.
+ * This method creates an instance of {@link PlainLiteralImpl}.<br>
+ * TODO: It would be better to use something like the {@link LiteralFactory}
+ * to create {@link PlainLiteral} instances. However it seams there is no
+ * such functionality present.
+ *
+ * @param literalValue the value of the literal
+ * @param lang the language of the literal
+ * @return the Literal
+ */
+ public static PlainLiteral createLiteral(String literalValue, String lang) {
+ Language language = (lang != null && lang.length() > 0) ? new Language(lang) : null;
+ return new PlainLiteralImpl(literalValue, language);
+ }
+
+ public static TypedLiteral createLiteral(Object object) {
+ return literalFactory.createTypedLiteral(object);
+ }
}
Modified: incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfText.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfText.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfText.java (original)
+++ incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfText.java Sun Dec 12 15:13:35 2010
@@ -1,5 +1,5 @@
/**
- *
+ *
*/
package eu.iksproject.rick.model.clerezza;
@@ -10,51 +10,57 @@ import org.apache.clerezza.rdf.core.impl
import eu.iksproject.rick.servicesapi.model.Text;
-public class RdfText implements Text,Cloneable {
- private final Literal literal;
- private final boolean isPlain;
- protected RdfText(String text, String lang){
- this.literal = new PlainLiteralImpl(text, lang !=null?new Language(lang):null);
- this.isPlain = true;
- }
- protected RdfText(Literal literal){
- this.literal = literal;
- this.isPlain = literal instanceof PlainLiteral;
- }
- @Override
- public String getLanguage() {
- return isPlain && ((PlainLiteral)literal).getLanguage() != null?
- ((PlainLiteral)literal).getLanguage().toString():null;
- }
-
- @Override
- public String getText() {
- return literal.getLexicalForm();
- }
- public Literal getLiteral() {
- return literal;
- }
- @Override
- public Object clone() {
- return new RdfText(
- new PlainLiteralImpl(literal.getLexicalForm(),
- isPlain?((PlainLiteral)literal).getLanguage():null));
- }
- @Override
- public int hashCode() {
- return literal.getLexicalForm().hashCode();
- }
- @Override
- public boolean equals(Object obj) {
- if(obj != null && obj instanceof Text && ((Text)obj).getText().equals(getText())){
- return (getLanguage() == null && ((Text)obj).getLanguage() == null) ||
- (getLanguage() != null && getLanguage().equals(((Text)obj).getLanguage()));
- } else {
- return false;
- }
- }
- @Override
- public String toString() {
- return literal.getLexicalForm();
- }
-}
\ No newline at end of file
+public class RdfText implements Text, Cloneable {
+ private final Literal literal;
+ private final boolean isPlain;
+
+ protected RdfText(String text, String lang) {
+ this.literal = new PlainLiteralImpl(text, lang != null ? new Language(lang) : null);
+ this.isPlain = true;
+ }
+
+ protected RdfText(Literal literal) {
+ this.literal = literal;
+ this.isPlain = literal instanceof PlainLiteral;
+ }
+
+ @Override
+ public String getLanguage() {
+ return isPlain && ((PlainLiteral) literal).getLanguage() != null ? ((PlainLiteral) literal).getLanguage().toString() : null;
+ }
+
+ @Override
+ public String getText() {
+ return literal.getLexicalForm();
+ }
+
+ public Literal getLiteral() {
+ return literal;
+ }
+
+ @Override
+ public Object clone() {
+ Language language = isPlain ? ((PlainLiteral) literal).getLanguage() : null;
+ return new RdfText(new PlainLiteralImpl(literal.getLexicalForm(), language));
+ }
+
+ @Override
+ public int hashCode() {
+ return literal.getLexicalForm().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj != null && obj instanceof Text && ((Text) obj).getText().equals(getText())) {
+ return (getLanguage() == null && ((Text) obj).getLanguage() == null)
+ || (getLanguage() != null && getLanguage().equals(((Text) obj).getLanguage()));
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return literal.getLexicalForm();
+ }
+}
Modified: incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfValueFactory.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfValueFactory.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfValueFactory.java (original)
+++ incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/RdfValueFactory.java Sun Dec 12 15:13:35 2010
@@ -11,7 +11,7 @@ import org.apache.clerezza.rdf.core.impl
import eu.iksproject.rick.servicesapi.model.Representation;
import eu.iksproject.rick.servicesapi.model.ValueFactory;
/**
- * Factory for creating instances of the RDF implementation of the Rick model
+ * Factory for creating instances of the RDF implementation of the Rick model
* based on Clerezza.
* TODO: Check if it makes sense to add a instance cache for {@link RdfReference}
* instances.
@@ -19,92 +19,98 @@ import eu.iksproject.rick.servicesapi.mo
*
*/
public class RdfValueFactory implements ValueFactory {
-
- private static RdfValueFactory instance;
- /**
- * TODO:Currently implements the singleton pattern. This might change in the
- * future if ValueFactoy becomes an own OSGI Service
- * @return
- */
- public static RdfValueFactory getInstance() {
- if(instance == null){
- instance = new RdfValueFactory();
- }
- return instance;
- }
- private RdfValueFactory(){
- super();
- }
-
- @Override
- public RdfReference createReference(Object value) {
- if(value == null){
- throw new IllegalArgumentException("The parsed value MUST NOT be NULL");
- } else if(value instanceof UriRef){
- return new RdfReference((UriRef)value);
- } else {
- return new RdfReference(value.toString());
- }
- }
-
- @Override
- public RdfText createText(Object value) {
- if(value == null){
- throw new IllegalArgumentException("The parsed value MUST NOT be NULL");
- } else if(value instanceof Literal){
- return new RdfText((Literal)value);
- } else {
- return createText(value.toString(), null);
- }
- }
-
- @Override
- public RdfText createText(String text, String language) {
- return new RdfText(text, language);
- }
-
- @Override
- public RdfRepresentation createRepresentation(String id) {
- if(id == null || id.isEmpty()){
- throw new IllegalArgumentException("The parsed id MUST NOT be NULL nor empty!");
- }
- return createRdfRepresentation(new UriRef(id), new SimpleMGraph());
- }
- /**
- * {@link RdfRepresentation} specific create Method based on an existing
- * RDF Graph
- * @param node The node of the node used for the representation. If this
- * node is not part of the parsed graph, the resulting representation
- * will be empty
- * @param graph the graph.
- * @return The representation based on the state of the parsed graph
- */
- public RdfRepresentation createRdfRepresentation(UriRef node, TripleCollection graph){
- if(node == null){
- throw new IllegalArgumentException("The parsed id MUST NOT be NULL!");
- }
- return new RdfRepresentation(node, graph);
- }
- /**
- * Extracts the Graph for {@link RdfRepresentation} or creates a {@link Graph}
- * for all other implementations of {@link Representation}
- * @param representation the representation
- * @return the read only RDF Graph.
- */
- public RdfRepresentation toRdfRepresentation(Representation representation) {
- if(representation instanceof RdfRepresentation){
- return (RdfRepresentation)representation;
- } else {
- //create the Clerezza Represenation
- RdfRepresentation clerezzaRep = createRepresentation(representation.getId());
- //Copy all values field by field
- for(Iterator<String> fields = representation.getFieldNames();fields.hasNext();){
- String field = fields.next();
- for(Iterator<Object> fieldValues = representation.get(field);fieldValues.hasNext();){
- clerezzaRep.add(field, fieldValues.next());
- }
- }
- return clerezzaRep;
- }
- }
+
+ private static RdfValueFactory instance;
+ /**
+ * TODO:Currently implements the singleton pattern. This might change in the
+ * future if ValueFactoy becomes an own OSGI Service
+ * @return
+ */
+ public static RdfValueFactory getInstance() {
+ if(instance == null){
+ instance = new RdfValueFactory();
+ }
+ return instance;
+ }
+
+ private RdfValueFactory(){
+ super();
+ }
+
+ @Override
+ public RdfReference createReference(Object value) {
+ if (value == null) {
+ throw new IllegalArgumentException("The parsed value MUST NOT be NULL");
+ } else if (value instanceof UriRef) {
+ return new RdfReference((UriRef) value);
+ } else {
+ return new RdfReference(value.toString());
+ }
+ }
+
+ @Override
+ public RdfText createText(Object value) {
+ if (value == null) {
+ throw new IllegalArgumentException("The parsed value MUST NOT be NULL");
+ } else if (value instanceof Literal) {
+ return new RdfText((Literal) value);
+ } else {
+ return createText(value.toString(), null);
+ }
+ }
+
+ @Override
+ public RdfText createText(String text, String language) {
+ return new RdfText(text, language);
+ }
+
+ @Override
+ public RdfRepresentation createRepresentation(String id) {
+ if (id == null || id.isEmpty()) {
+ throw new IllegalArgumentException("The parsed id MUST NOT be NULL nor empty!");
+ }
+ return createRdfRepresentation(new UriRef(id), new SimpleMGraph());
+ }
+
+ /**
+ * {@link RdfRepresentation} specific create Method based on an existing
+ * RDF Graph.
+ *
+ * @param node The node of the node used for the representation. If this
+ * node is not part of the parsed graph, the resulting representation
+ * will be empty
+ * @param graph the graph.
+ * @return The representation based on the state of the parsed graph
+ */
+ public RdfRepresentation createRdfRepresentation(UriRef node, TripleCollection graph) {
+ if (node == null) {
+ throw new IllegalArgumentException("The parsed id MUST NOT be NULL!");
+ }
+ return new RdfRepresentation(node, graph);
+ }
+
+ /**
+ * Extracts the Graph for {@link RdfRepresentation} or creates a {@link Graph}
+ * for all other implementations of {@link Representation}.
+ *
+ * @param representation the representation
+ * @return the read only RDF Graph.
+ */
+ public RdfRepresentation toRdfRepresentation(Representation representation) {
+ if (representation instanceof RdfRepresentation) {
+ return (RdfRepresentation) representation;
+ } else {
+ //create the Clerezza Represenation
+ RdfRepresentation clerezzaRep = createRepresentation(representation.getId());
+ //Copy all values field by field
+ for (Iterator<String> fields = representation.getFieldNames(); fields.hasNext();) {
+ String field = fields.next();
+ for (Iterator<Object> fieldValues = representation.get(field); fieldValues.hasNext();) {
+ clerezzaRep.add(field, fieldValues.next());
+ }
+ }
+ return clerezzaRep;
+ }
+ }
+
}
Modified: incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/impl/Literal2TextAdapter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/impl/Literal2TextAdapter.java?rev=1044832&r1=1044831&r2=1044832&view=diff
==============================================================================
--- incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/impl/Literal2TextAdapter.java (original)
+++ incubator/stanbol/trunk/rick/model/clerezza/src/main/java/eu/iksproject/rick/model/clerezza/impl/Literal2TextAdapter.java Sun Dec 12 15:13:35 2010
@@ -16,59 +16,62 @@ import eu.iksproject.rick.servicesapi.mo
/**
* This Adapter does two things:
* <ol>
- * <li> It filters {@link Literal}s based on the languages parsed in the
+ * <li> It filters {@link Literal}s based on the languages parsed in the
* constructor. If no languages are parsed, than all languages are accepted
* <li> It converts {@link Literal}s to {@link Text}. Only {@link PlainLiteral}
- * and {@link TypedLiteral} with an xsd data type present in the
+ * and {@link TypedLiteral} with an xsd data type present in the
* {@link RdfResourceUtils#STRING_DATATYPES} are converted. All other literals are
* filtered (meaning that <code>null</code> is returned)
* </ol>
* The difference of this Adapter to the {@link LiteralAdapter} with the generic
* type {@link Text} is that the LiteralAdapter can not be used to filter
* literals based on there language.
- * @author Rupert Westenthaler
*
+ * @author Rupert Westenthaler
*/
public class Literal2TextAdapter<T extends Literal> implements Adapter<T,Text> {
- /**
- * Unmodifiable set of the active languages
- */
- protected final Set<String> languages;
- private final boolean containsNull;
- protected final RdfValueFactory valueFactory = RdfValueFactory.getInstance();
- /**
- * Filters Literals in the parsed Iterator based on the parsed languages and
- * convert matching Literals to Text
- * @param it the iterator
- * @param lang the active languages. If <code>null</code> or empty, all
- * languages are active. If <code>null</code> is parsed as an element, that
- * also Literals without a language are returned
- */
- public Literal2TextAdapter(String...lang){
- if(lang != null && lang.length>0){
- this.languages = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(lang)));
- this.containsNull = languages.contains(null);
- } else{
- this.languages = null;
- this.containsNull = true;
- }
- //init the first element
- }
- @Override
- public Text adapt(T value, Class<Text> type) {
- if(value instanceof PlainLiteral){
- if(languages == null || languages.contains(((PlainLiteral) value).getLanguage())){
- return valueFactory.createText(value);
- } //else wrong language -> filter
- } else if(containsNull){
- /*
- * if the null language is active, than we can also return
- * "normal" literals (with no known language).
- * But first we need to check the Datatype!
- */
- return valueFactory.createText(value);
- } // else no language defined -> filter
- return null;
- }
+ /**
+ * Unmodifiable set of the active languages
+ */
+ protected final Set<String> languages;
+ private final boolean containsNull;
+ protected final RdfValueFactory valueFactory = RdfValueFactory.getInstance();
+
+ /**
+ * Filters Literals in the parsed Iterator based on the parsed languages and
+ * convert matching Literals to Text
+ * @param it the iterator
+ * @param lang the active languages. If <code>null</code> or empty, all
+ * languages are active. If <code>null</code> is parsed as an element, that
+ * also Literals without a language are returned
+ */
+ public Literal2TextAdapter(String...lang){
+ if(lang != null && lang.length>0){
+ this.languages = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(lang)));
+ this.containsNull = languages.contains(null);
+ } else{
+ this.languages = null;
+ this.containsNull = true;
+ }
+ //init the first element
+ }
+
+ @Override
+ public Text adapt(T value, Class<Text> type) {
+ if(value instanceof PlainLiteral){
+ if(languages == null || languages.contains(((PlainLiteral) value).getLanguage())){
+ return valueFactory.createText(value);
+ } //else wrong language -> filter
+ } else if(containsNull){
+ /*
+ * if the null language is active, than we can also return
+ * "normal" literals (with no known language).
+ * But first we need to check the Datatype!
+ */
+ return valueFactory.createText(value);
+ } // else no language defined -> filter
+ return null;
+ }
+
}