From 622a1d38518c577afc4611abc757a70d1ee9a88d Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Fri, 16 May 2014 15:48:24 -0700 Subject: [PATCH 1/2] extract LDQuery utility to its own module --- .../ldpath/ldpath-backend-linkeddata/pom.xml | 99 ----- .../assembly.xml | 0 libraries/ldpath/ldpath-query/pom.xml | 357 ++++++++++++++++++ .../src/main/doc/LICENSE.txt | 0 .../src/main/doc/NOTICE.txt | 0 .../src/main/doc/README.txt | 0 .../marmotta/ldpath/query}/LDQuery.java | 3 +- libraries/ldpath/pom.xml | 1 + pom.xml | 4 +- 9 files changed, 362 insertions(+), 102 deletions(-) rename libraries/ldpath/{ldpath-backend-linkeddata => ldpath-query}/assembly.xml (100%) create mode 100644 libraries/ldpath/ldpath-query/pom.xml rename libraries/ldpath/{ldpath-backend-linkeddata => ldpath-query}/src/main/doc/LICENSE.txt (100%) rename libraries/ldpath/{ldpath-backend-linkeddata => ldpath-query}/src/main/doc/NOTICE.txt (100%) rename libraries/ldpath/{ldpath-backend-linkeddata => ldpath-query}/src/main/doc/README.txt (100%) rename libraries/ldpath/{ldpath-backend-linkeddata/src/main/java/org/apache/marmotta/ldpath/backend/linkeddata => ldpath-query/src/main/java/org/apache/marmotta/ldpath/query}/LDQuery.java (98%) diff --git a/libraries/ldpath/ldpath-backend-linkeddata/pom.xml b/libraries/ldpath/ldpath-backend-linkeddata/pom.xml index 5848b4826..45a496396 100644 --- a/libraries/ldpath/ldpath-backend-linkeddata/pom.xml +++ b/libraries/ldpath/ldpath-backend-linkeddata/pom.xml @@ -87,95 +87,6 @@ - - - marmotta-release - - - - org.apache.maven.plugins - maven-jar-plugin - - - - org.apache.marmotta.ldpath.backend.linkeddata.LDQuery - - - - - - com.jolira - onejar-maven-plugin - 1.4.4 - - - package - - one-jar - - - ldpath-${project.version}.jar - - - - - - org.codehaus.mojo - truezip-maven-plugin - 1.1 - - - copy-into - - copy - - package - - - - ${project.basedir}/src/main/doc/ - - LICENSE.txt - NOTICE.txt - - target/ldpath-${project.version}.jar/META-INF - - - ${project.basedir}/../../../ - - DISCLAIMER.txt - - target/ldpath-${project.version}.jar/META-INF - - - - - - - - - maven-assembly-plugin - - - - single - - package - - - assembly.xml - - apache-marmotta-${project.version} - false - - - - - - - - - @@ -300,16 +211,6 @@ org.openrdf.sesame sesame-rio-trig - - - commons-cli - commons-cli - 1.2 - - - commons-configuration - commons-configuration - ch.qos.logback logback-classic diff --git a/libraries/ldpath/ldpath-backend-linkeddata/assembly.xml b/libraries/ldpath/ldpath-query/assembly.xml similarity index 100% rename from libraries/ldpath/ldpath-backend-linkeddata/assembly.xml rename to libraries/ldpath/ldpath-query/assembly.xml diff --git a/libraries/ldpath/ldpath-query/pom.xml b/libraries/ldpath/ldpath-query/pom.xml new file mode 100644 index 000000000..0dbc9d3e3 --- /dev/null +++ b/libraries/ldpath/ldpath-query/pom.xml @@ -0,0 +1,357 @@ + + + + 4.0.0 + + + org.apache.marmotta + marmotta-parent + 3.2.0 + ../../../parent + + + LDPath: Linked Data Query tool + ldpath-query + bundle + + + + + + org.zeroturnaround + jrebel-maven-plugin + + + generate-rebel-xml + process-resources + + generate + + + + + ../../../ + $${rebel.root} + + + + + + + org.jasig.maven + maven-notice-plugin + 1.0.4 + + NOTICE.template + + + ../../../license-mappings.xml + + + + + org.apache.felix + maven-bundle-plugin + true + + + Apache Marmotta LDPath + http://wiki.apache.org/marmotta/LDPath + <_versionpolicy>$${version;===;${@}} + + org.slf4j.*;version="[1.6,2)", + ch.qos.logback.classic;resolution:=optional, + * + + + org.apache.marmotta.ldpath.backend.linkeddata;version=${project.version} + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + org.apache.marmotta.ldpath.query.LDQuery + + + + + + com.jolira + onejar-maven-plugin + 1.4.4 + + + package + + one-jar + + + ldpath-${project.version}.jar + + + + + + org.codehaus.mojo + truezip-maven-plugin + 1.1 + + + copy-into + + copy + + package + + + + ${project.basedir}/src/main/doc/ + + LICENSE.txt + NOTICE.txt + + target/ldpath-${project.version}.jar/META-INF + + + ${project.basedir}/../../../ + + DISCLAIMER.txt + + target/ldpath-${project.version}.jar/META-INF + + + + + + + + + + + + + marmotta-release + + + + maven-assembly-plugin + + + + single + + package + + + assembly.xml + + apache-marmotta-${project.version} + false + + + + + + + + + + + + org.apache.marmotta + ldpath-api + + + org.apache.marmotta + ldpath-core + + + org.apache.marmotta + ldpath-backend-sesame + + + org.apache.marmotta + ldpath-backend-linkeddata + ${project.version} + + + org.apache.marmotta + ldpath-functions-text + + + org.apache.marmotta + ldpath-functions-xml + + + org.apache.marmotta + ldpath-functions-math + + + org.apache.marmotta + ldpath-functions-html + + + org.apache.marmotta + ldpath-functions-date + + + + + org.apache.marmotta + ldclient-api + + + org.apache.marmotta + ldclient-core + + + org.apache.marmotta + ldclient-provider-rdf + + + org.apache.marmotta + ldclient-provider-rdfa + + + org.apache.marmotta + ldclient-provider-facebook + + + org.apache.marmotta + ldclient-provider-mediawiki + + + org.apache.marmotta + ldclient-provider-youtube + + + org.apache.marmotta + ldclient-provider-vimeo + + + + + org.apache.marmotta + ldcache-api + + + org.apache.marmotta + ldcache-core + + + org.apache.marmotta + ldcache-backend-infinispan + + + + + org.openrdf.sesame + sesame-model + + + org.openrdf.sesame + sesame-rio-api + + + org.openrdf.sesame + sesame-repository-sail + + + org.openrdf.sesame + sesame-repository-event + + + org.openrdf.sesame + sesame-rio-rdfxml + + + org.openrdf.sesame + sesame-rio-trix + + + org.openrdf.sesame + sesame-rio-turtle + + + org.openrdf.sesame + sesame-rio-n3 + + + org.openrdf.sesame + sesame-rio-ntriples + + + org.openrdf.sesame + sesame-rio-trig + + + + commons-cli + commons-cli + 1.2 + + + commons-configuration + commons-configuration + + + ch.qos.logback + logback-classic + + + + commons-io + commons-io + + + com.google.guava + guava + + + + + + junit + junit + test + + + hamcrest-core + org.hamcrest + test + + + hamcrest-library + org.hamcrest + test + + + org.apache.marmotta + ldcache-core + ${project.version} + test-jar + test + + + + diff --git a/libraries/ldpath/ldpath-backend-linkeddata/src/main/doc/LICENSE.txt b/libraries/ldpath/ldpath-query/src/main/doc/LICENSE.txt similarity index 100% rename from libraries/ldpath/ldpath-backend-linkeddata/src/main/doc/LICENSE.txt rename to libraries/ldpath/ldpath-query/src/main/doc/LICENSE.txt diff --git a/libraries/ldpath/ldpath-backend-linkeddata/src/main/doc/NOTICE.txt b/libraries/ldpath/ldpath-query/src/main/doc/NOTICE.txt similarity index 100% rename from libraries/ldpath/ldpath-backend-linkeddata/src/main/doc/NOTICE.txt rename to libraries/ldpath/ldpath-query/src/main/doc/NOTICE.txt diff --git a/libraries/ldpath/ldpath-backend-linkeddata/src/main/doc/README.txt b/libraries/ldpath/ldpath-query/src/main/doc/README.txt similarity index 100% rename from libraries/ldpath/ldpath-backend-linkeddata/src/main/doc/README.txt rename to libraries/ldpath/ldpath-query/src/main/doc/README.txt diff --git a/libraries/ldpath/ldpath-backend-linkeddata/src/main/java/org/apache/marmotta/ldpath/backend/linkeddata/LDQuery.java b/libraries/ldpath/ldpath-query/src/main/java/org/apache/marmotta/ldpath/query/LDQuery.java similarity index 98% rename from libraries/ldpath/ldpath-backend-linkeddata/src/main/java/org/apache/marmotta/ldpath/backend/linkeddata/LDQuery.java rename to libraries/ldpath/ldpath-query/src/main/java/org/apache/marmotta/ldpath/query/LDQuery.java index b5383c0bb..c12f4075f 100644 --- a/libraries/ldpath/ldpath-backend-linkeddata/src/main/java/org/apache/marmotta/ldpath/backend/linkeddata/LDQuery.java +++ b/libraries/ldpath/ldpath-query/src/main/java/org/apache/marmotta/ldpath/query/LDQuery.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.marmotta.ldpath.backend.linkeddata; +package org.apache.marmotta.ldpath.query; import ch.qos.logback.classic.Level; import org.apache.commons.cli.*; import org.apache.commons.io.FileUtils; import org.apache.marmotta.ldpath.LDPath; +import org.apache.marmotta.ldpath.backend.linkeddata.LDCacheBackend; import org.apache.marmotta.ldpath.exception.LDPathParseException; import org.openrdf.model.Resource; import org.openrdf.model.Value; diff --git a/libraries/ldpath/pom.xml b/libraries/ldpath/pom.xml index fab550e2c..ba6e0601a 100644 --- a/libraries/ldpath/pom.xml +++ b/libraries/ldpath/pom.xml @@ -99,6 +99,7 @@ ldpath-functions-text ldpath-functions-math ldpath-functions-date + ldpath-query diff --git a/pom.xml b/pom.xml index d9979a0cb..7e3a9f290 100644 --- a/pom.xml +++ b/pom.xml @@ -344,12 +344,12 @@ - + - + From 346f40c4973a5fe62f80ae5123d39a1515e979d4 Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Fri, 16 May 2014 16:55:19 -0700 Subject: [PATCH 2/2] add JSON output format for LDQuery tool --- libraries/ldpath/ldpath-query/pom.xml | 5 ++ .../ldpath-query/src/main/doc/README.txt | 2 +- .../apache/marmotta/ldpath/query/LDQuery.java | 53 +++++++++++++------ 3 files changed, 44 insertions(+), 16 deletions(-) diff --git a/libraries/ldpath/ldpath-query/pom.xml b/libraries/ldpath/ldpath-query/pom.xml index 0dbc9d3e3..424af31db 100644 --- a/libraries/ldpath/ldpath-query/pom.xml +++ b/libraries/ldpath/ldpath-query/pom.xml @@ -327,6 +327,11 @@ com.google.guava guava + + com.fasterxml.jackson.jr + jackson-jr-objects + 2.3.3 + diff --git a/libraries/ldpath/ldpath-query/src/main/doc/README.txt b/libraries/ldpath/ldpath-query/src/main/doc/README.txt index 65968b5c6..64db9df6e 100644 --- a/libraries/ldpath/ldpath-query/src/main/doc/README.txt +++ b/libraries/ldpath/ldpath-query/src/main/doc/README.txt @@ -1,4 +1,4 @@ -LDPath Linked Data Backend +LDPath Linked Data Query Tool ========================== LDPath is a query language designed for querying the Linked Data Cloud. It diff --git a/libraries/ldpath/ldpath-query/src/main/java/org/apache/marmotta/ldpath/query/LDQuery.java b/libraries/ldpath/ldpath-query/src/main/java/org/apache/marmotta/ldpath/query/LDQuery.java index c12f4075f..407cce8f7 100644 --- a/libraries/ldpath/ldpath-query/src/main/java/org/apache/marmotta/ldpath/query/LDQuery.java +++ b/libraries/ldpath/ldpath-query/src/main/java/org/apache/marmotta/ldpath/query/LDQuery.java @@ -18,8 +18,10 @@ package org.apache.marmotta.ldpath.query; import ch.qos.logback.classic.Level; +import com.fasterxml.jackson.jr.ob.JSON; import org.apache.commons.cli.*; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.output.ProxyOutputStream; import org.apache.marmotta.ldpath.LDPath; import org.apache.marmotta.ldpath.backend.linkeddata.LDCacheBackend; import org.apache.marmotta.ldpath.exception.LDPathParseException; @@ -97,29 +99,48 @@ public static void main(String[] args) { System.out.println(v.stringValue()); } } else if(cmd.hasOption("program")) { + File file = new File(cmd.getOptionValue("program")); Map> result = ldpath.programQuery(context,new FileReader(file)); - for(String field : result.keySet()) { - StringBuilder line = new StringBuilder(); - line.append(field); - line.append(" = "); - line.append("{"); - for (Iterator it = result.get(field).iterator(); it.hasNext();) { - line.append(it.next().toString()); - if(it.hasNext()) { - line.append(", "); - } + if (cmd.hasOption("format")) { + final String format = cmd.getOptionValue("format"); + if (format.equals("json")) { + // Jackson.jr closes the output stream. + final ProxyOutputStream proxyOutputStream = new ProxyOutputStream(System.out) { + @Override + public void close() throws IOException { + flush(); + } + }; + + JSON.std.write(result, proxyOutputStream); + System.out.println(""); + } else { + System.err.println("Unknown format: " + format); + System.exit(1); } - line.append("}"); - System.out.println(line); + } else { + for(String field : result.keySet()) { + StringBuilder line = new StringBuilder(); + line.append(field); + line.append(" = "); + line.append("{"); + for (Iterator it = result.get(field).iterator(); it.hasNext();) { + line.append(it.next().toString()); + if(it.hasNext()) { + line.append(", "); + } + } + line.append("}"); + System.out.println(line); + } } } } - if(tmpDir != null) { FileUtils.deleteDirectory(tmpDir); } @@ -137,12 +158,11 @@ public static void main(String[] args) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("LDQuery", options, true); } catch (IOException e) { - System.err.println("could not access cache data directory"); + System.err.println("could not access cache data directory" + e); HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("LDQuery", options, true); } - } @SuppressWarnings("static-access") @@ -167,6 +187,9 @@ private static Options buildOptions() { Option store = OptionBuilder.withArgName("dir").hasArg().withDescription("cache the retrieved data in this directory").create("store"); result.addOption(store); + Option format = OptionBuilder.withArgName("format").hasArg().withDescription("output format").create("format"); + result.addOption(format); + return result; }