From 3233751722bfdea540a8ded251b4009c1caeb758 Mon Sep 17 00:00:00 2001 From: Luigi Asprino Date: Mon, 16 Sep 2024 14:43:53 +0200 Subject: [PATCH] #484 remove triplifier dependencies from the engine module --- sparql-anything-cli/pom.xml | 84 ++++++++++++++++++ sparql-anything-engine/pom.xml | 84 ++---------------- .../github/sparqlanything/engine/FacadeX.java | 3 +- .../engine/functions/Cardinal.java | 5 -- .../engine/test/TestSilent.java | 75 ++++------------ .../engine/test/TestTriplifier2.java | 10 +-- sparql-anything-it/pom.xml | 87 ++++++++++++++++++- .../sparqlanything/it/DocumentFunctions.java | 52 +++++++++++ 8 files changed, 250 insertions(+), 150 deletions(-) create mode 100644 sparql-anything-it/src/test/java/io/github/sparqlanything/it/DocumentFunctions.java diff --git a/sparql-anything-cli/pom.xml b/sparql-anything-cli/pom.xml index 448e5360..e905c6e3 100644 --- a/sparql-anything-cli/pom.xml +++ b/sparql-anything-cli/pom.xml @@ -43,6 +43,90 @@ ${project.version} + + io.github.sparql-anything + sparql-anything-binary + ${project.version} + + + + io.github.sparql-anything + sparql-anything-spreadsheet + ${project.version} + + + + io.github.sparql-anything + sparql-anything-rdf + ${project.version} + + + + io.github.sparql-anything + sparql-anything-csv + ${project.version} + + + + io.github.sparql-anything + sparql-anything-xml + ${project.version} + + + + io.github.sparql-anything + sparql-anything-docs + ${project.version} + + + + io.github.sparql-anything + sparql-anything-html + ${project.version} + + + + io.github.sparql-anything + sparql-anything-text + ${project.version} + + + + io.github.sparql-anything + sparql-anything-json + ${project.version} + + + + io.github.sparql-anything + sparql-anything-yaml + ${project.version} + + + + io.github.sparql-anything + sparql-anything-markdown + ${project.version} + + + + io.github.sparql-anything + sparql-anything-bibliography + ${project.version} + + + + io.github.sparql-anything + sparql-anything-archive + ${project.version} + + + + io.github.sparql-anything + sparql-anything-slides + ${project.version} + + io.github.basilapi sparql diff --git a/sparql-anything-engine/pom.xml b/sparql-anything-engine/pom.xml index 8e336b16..18224b08 100644 --- a/sparql-anything-engine/pom.xml +++ b/sparql-anything-engine/pom.xml @@ -47,70 +47,18 @@ ${project.version} - - io.github.sparql-anything - sparql-anything-csv - ${project.version} - - - - io.github.sparql-anything - sparql-anything-xml - ${project.version} - - - - io.github.sparql-anything - sparql-anything-docs - ${project.version} - - - - io.github.sparql-anything - sparql-anything-html - ${project.version} - - - - io.github.sparql-anything - sparql-anything-text - ${project.version} - - - - io.github.sparql-anything - sparql-anything-json - ${project.version} - - - - io.github.sparql-anything - sparql-anything-yaml - ${project.version} - - - - io.github.sparql-anything - sparql-anything-markdown - ${project.version} - - - - io.github.sparql-anything - sparql-anything-bibliography - ${project.version} - - io.github.sparql-anything sparql-anything-archive ${project.version} + compile io.github.sparql-anything - sparql-anything-slides + sparql-anything-testutils ${project.version} + test @@ -125,28 +73,8 @@ - io.github.sparql-anything - sparql-anything-binary - ${project.version} - - - - io.github.sparql-anything - sparql-anything-spreadsheet - ${project.version} - - - - io.github.sparql-anything - sparql-anything-rdf - ${project.version} - - - - io.github.sparql-anything - sparql-anything-testutils - ${project.version} - test + org.jsoup + jsoup @@ -161,6 +89,8 @@ java-string-similarity + + diff --git a/sparql-anything-engine/src/main/java/io/github/sparqlanything/engine/FacadeX.java b/sparql-anything-engine/src/main/java/io/github/sparqlanything/engine/FacadeX.java index 640c447a..8f6bc5a2 100644 --- a/sparql-anything-engine/src/main/java/io/github/sparqlanything/engine/FacadeX.java +++ b/sparql-anything-engine/src/main/java/io/github/sparqlanything/engine/FacadeX.java @@ -21,7 +21,6 @@ import io.github.sparqlanything.engine.functions.*; import io.github.sparqlanything.engine.functions.reflection.ReflectionFunctionFactory; import io.github.sparqlanything.model.Triplifier; -import io.github.sparqlanything.rdf.RDFTriplifier; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.text.WordUtils; import org.apache.commons.text.similarity.*; @@ -69,7 +68,7 @@ public final class FacadeX { Registry.registerTriplifier("io.github.sparqlanything.json.JSONTriplifier", new String[]{"json"}, new String[]{"application/json", "application/problem+json"}); Registry.registerTriplifier("io.github.sparqlanything.yaml.YAMLTriplifier", new String[]{"yaml"}, new String[]{"application/yaml", "text/yaml", "x-text/yaml"}); Registry.registerTriplifier("io.github.sparqlanything.spreadsheet.SpreadsheetTriplifier", new String[]{"xls", "xlsx"}, new String[]{"application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); - Registry.registerTriplifier(RDFTriplifier.class.getCanonicalName(), new String[]{"rdf", "ttl", "nt", "jsonld", "owl", "trig", "nq", "trix", "trdf"}, new String[]{"application/rdf+thrift", "application/trix+xml", "application/n-quads", "text/trig", "application/owl+xml", "text/turtle", "application/rdf+xml", "application/n-triples", "application/ld+json"}); + Registry.registerTriplifier("io.github.sparqlanything.rdf.RDFTriplifier", new String[]{"rdf", "ttl", "nt", "jsonld", "owl", "trig", "nq", "trix", "trdf"}, new String[]{"application/rdf+thrift", "application/trix+xml", "application/n-quads", "text/trig", "application/owl+xml", "text/turtle", "application/rdf+xml", "application/n-triples", "application/ld+json"}); Registry.registerTriplifier("io.github.sparqlanything.binary.BinaryTriplifier", new String[]{"png", "jpeg", "jpg", "bmp", "tiff", "tif", "ico"}, new String[]{"image/png", "image/jpeg", "image/bmp", "image/tiff", "image/vnd.microsoft.icon"}); Registry.registerTriplifier("io.github.sparqlanything.slides.PptxTriplifier", new String[]{"pptx"}, new String[]{"application/vnd.openxmlformats-officedocument.presentationml.presentation"}); diff --git a/sparql-anything-engine/src/main/java/io/github/sparqlanything/engine/functions/Cardinal.java b/sparql-anything-engine/src/main/java/io/github/sparqlanything/engine/functions/Cardinal.java index 6dca9301..7137a329 100644 --- a/sparql-anything-engine/src/main/java/io/github/sparqlanything/engine/functions/Cardinal.java +++ b/sparql-anything-engine/src/main/java/io/github/sparqlanything/engine/functions/Cardinal.java @@ -16,15 +16,10 @@ package io.github.sparqlanything.engine.functions; -import org.apache.jena.datatypes.RDFDatatype; -import org.apache.jena.datatypes.xsd.XSDDatatype; -import org.apache.jena.datatypes.xsd.impl.XMLLiteralType; -import org.apache.jena.graph.NodeFactory; import org.apache.jena.sparql.expr.ExprEvalException; import org.apache.jena.sparql.expr.NodeValue; import org.apache.jena.sparql.function.FunctionBase1; import org.apache.jena.sparql.util.FmtUtils; -import io.github.sparqlanything.html.org.semarglproject.vocab.XSD; public class Cardinal extends FunctionBase1 implements FXFunction { diff --git a/sparql-anything-engine/src/test/java/io/github/sparqlanything/engine/test/TestSilent.java b/sparql-anything-engine/src/test/java/io/github/sparqlanything/engine/test/TestSilent.java index 5ecad3a6..a741e963 100644 --- a/sparql-anything-engine/src/test/java/io/github/sparqlanything/engine/test/TestSilent.java +++ b/sparql-anything-engine/src/test/java/io/github/sparqlanything/engine/test/TestSilent.java @@ -17,6 +17,7 @@ package io.github.sparqlanything.engine.test; import io.github.sparqlanything.engine.FacadeX; +import io.github.sparqlanything.engine.TriplifierRegister; import org.apache.jena.query.*; import org.apache.jena.sparql.engine.main.QC; import org.junit.Assert; @@ -24,89 +25,43 @@ public class TestSilent { + public ResultSet execute(String queryString) { QC.setFactory(ARQ.getContext(), FacadeX.ExecutorFactory); Dataset kb = DatasetFactory.createGeneral(); Query q = QueryFactory.create(queryString); - ResultSet result = QueryExecutionFactory.create(q, kb).execSelect(); - return result; - } - - @Test - public void testSilent() { - boolean failed = false; - String q = "PREFIX fx: \n" + - "select * where {" + - "service silent {" + - "fx:properties fx:location \"http://www.example.org2562456294865\";" + - " fx:media-type \"application/json\"." + - " ?s ?p ?o" + - "}" + - "}"; - try { - execute(q); - } catch (Exception e) { - failed = true; - } - Assert.assertFalse(failed); + return QueryExecutionFactory.create(q, kb).execSelect(); } - @Test - public void testNoSilent() { - boolean failed = true; - String q = "PREFIX fx: \n" + - "select * where {" + - "service {" + - "fx:properties fx:location \"http://www.example.org2562456294865\";" + - " fx:media-type \"application/json\"." + - " ?s ?p ?o" + - "}" + - "}"; - try { - execute(q); - } catch (Exception e) { - failed = false; - } - Assert.assertFalse(failed); - } @Test - public void test404NoSilent() { + public void test404Silent() { boolean raisesException = false; - String q = "PREFIX fx: \n" + - "select * where {" + - "service {" + - "fx:properties fx:location \"https://sparql.xyz/qewrqetqert\";" + - " fx:media-type \"application/json\"." + - " ?s ?p ?o" + - "}" + - "}"; + + String q = "SELECT DISTINCT ?g ?s ?p ?o WHERE { SERVICE SILENT {GRAPH ?g {?s ?p ?o}}}"; + try { + TriplifierRegister.getInstance().registerTriplifier("io.github.sparqlanything.engine.test.TestTriplifier2", new String[]{"test2"}, new String[]{"test-mime2"}); execute(q); } catch (Exception e) { - //e.printStackTrace(); raisesException = true; } - Assert.assertTrue(raisesException); + Assert.assertFalse(raisesException); } @Test - public void test404Silent() { + public void test404NOSilent() { boolean raisesException = false; - String q = "PREFIX fx: \n" + - "select * where {" + - "service silent {" + - "fx:properties fx:location \"https://sparql.xyz/qewrqetqert\";" + - " fx:media-type \"application/json\"." + - " ?s ?p ?o" + - "}" + - "}"; + + String q = "SELECT DISTINCT ?g ?s ?p ?o WHERE { SERVICE {GRAPH ?g {?s ?p ?o}}}"; + try { + TriplifierRegister.getInstance().registerTriplifier("io.github.sparqlanything.engine.test.TestTriplifier2", new String[]{"test2"}, new String[]{"test-mime2"}); execute(q); } catch (Exception e) { raisesException = true; } - Assert.assertFalse(raisesException); + Assert.assertTrue(raisesException); } } diff --git a/sparql-anything-engine/src/test/java/io/github/sparqlanything/engine/test/TestTriplifier2.java b/sparql-anything-engine/src/test/java/io/github/sparqlanything/engine/test/TestTriplifier2.java index 48d487ea..1cf2ccfa 100644 --- a/sparql-anything-engine/src/test/java/io/github/sparqlanything/engine/test/TestTriplifier2.java +++ b/sparql-anything-engine/src/test/java/io/github/sparqlanything/engine/test/TestTriplifier2.java @@ -18,13 +18,16 @@ import io.github.sparqlanything.model.FacadeXGraphBuilder; import io.github.sparqlanything.model.Triplifier; +import io.github.sparqlanything.model.TriplifierHTTPException; import org.apache.commons.io.IOUtils; import com.google.common.collect.Sets; import org.apache.jena.graph.Graph; import org.apache.jena.graph.NodeFactory; import org.apache.jena.sparql.graph.GraphFactory; +import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStreamReader; import java.net.URL; import java.nio.charset.Charset; import java.util.Properties; @@ -37,16 +40,13 @@ public TestTriplifier2() { } @Override - public void triplify(Properties properties, FacadeXGraphBuilder builder) throws IOException { - - Graph g = GraphFactory.createGraphMem(); - + public void triplify(Properties properties, FacadeXGraphBuilder builder) throws IOException, TriplifierHTTPException { URL url = Triplifier.getLocation(properties); if (url == null) return; - String content = IOUtils.toString(url, Charset.defaultCharset()); + String content = IOUtils.toString(Triplifier.getInputStream(properties), Charset.defaultCharset()); builder.add(NodeFactory.createURI(TriplifierRegistryTest.PREFIX + "g"), NodeFactory.createURI(TriplifierRegistryTest.PREFIX + "s"), NodeFactory.createURI(TriplifierRegistryTest.PREFIX + "p"), NodeFactory.createLiteralString(content)); diff --git a/sparql-anything-it/pom.xml b/sparql-anything-it/pom.xml index fff332b6..943dbfd1 100644 --- a/sparql-anything-it/pom.xml +++ b/sparql-anything-it/pom.xml @@ -41,7 +41,92 @@ ${project.version} test - + + + io.github.sparql-anything + sparql-anything-binary + ${project.version} + + + + io.github.sparql-anything + sparql-anything-spreadsheet + ${project.version} + + + + io.github.sparql-anything + sparql-anything-rdf + ${project.version} + + + + io.github.sparql-anything + sparql-anything-csv + ${project.version} + + + + io.github.sparql-anything + sparql-anything-xml + ${project.version} + + + + io.github.sparql-anything + sparql-anything-docs + ${project.version} + + + + io.github.sparql-anything + sparql-anything-html + ${project.version} + + + + io.github.sparql-anything + sparql-anything-text + ${project.version} + + + + io.github.sparql-anything + sparql-anything-json + ${project.version} + + + + io.github.sparql-anything + sparql-anything-yaml + ${project.version} + + + + io.github.sparql-anything + sparql-anything-markdown + ${project.version} + + + + io.github.sparql-anything + sparql-anything-bibliography + ${project.version} + + + + io.github.sparql-anything + sparql-anything-archive + ${project.version} + + + + io.github.sparql-anything + sparql-anything-slides + ${project.version} + + + junit junit diff --git a/sparql-anything-it/src/test/java/io/github/sparqlanything/it/DocumentFunctions.java b/sparql-anything-it/src/test/java/io/github/sparqlanything/it/DocumentFunctions.java new file mode 100644 index 00000000..01339954 --- /dev/null +++ b/sparql-anything-it/src/test/java/io/github/sparqlanything/it/DocumentFunctions.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024 SPARQL Anything Contributors @ http://github.com/sparql-anything + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.github.sparqlanything.it; + +import io.github.sparqlanything.engine.FacadeX; +import org.apache.jena.sparql.engine.main.OpExecutorFactory; +import org.apache.jena.sparql.function.FunctionRegistry; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +public class DocumentFunctions { + + /** + * This is useful for generating the markdown documentation of registered functions. + */ + @Test + public void printDocumentation(){ + OpExecutorFactory ef = FacadeX.ExecutorFactory; // classloader does the appropriate configuration + FunctionRegistry fr = FunctionRegistry.get(); + Iterator functions = fr.keys(); + List list = new ArrayList(); + functions.forEachRemaining(list::add); + Collections.sort(list); + functions = list.iterator(); + + while(functions.hasNext()){ + String function = functions.next(); + //FunctionFactory ff = fr.get(function); + //Function f = ff.create(function); + + } + + } +}