diff --git a/src/main/java/uk/ac/cam/cares/jps/base/annotate/MetaDataAnnotator.java b/src/main/java/uk/ac/cam/cares/jps/base/annotate/MetaDataAnnotator.java deleted file mode 100644 index a2996b77b..000000000 --- a/src/main/java/uk/ac/cam/cares/jps/base/annotate/MetaDataAnnotator.java +++ /dev/null @@ -1,206 +0,0 @@ -package uk.ac.cam.cares.jps.base.annotate; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.TimeZone; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import uk.ac.cam.cares.jps.base.config.IKeys; -import uk.ac.cam.cares.jps.base.config.KeyValueManager; -import uk.ac.cam.cares.jps.base.discovery.MediaType; -import uk.ac.cam.cares.jps.base.exception.JPSRuntimeException; -import uk.ac.cam.cares.jps.base.query.AccessAgentCaller; -import uk.ac.cam.cares.jps.base.query.SparqlOverHttpService; -import uk.ac.cam.cares.jps.base.query.SparqlOverHttpService.RDFStoreType; -import uk.ac.cam.cares.jps.base.query.sparql.PrefixToUrlMap; -import uk.ac.cam.cares.jps.base.query.sparql.Prefixes; -import uk.ac.cam.cares.jps.base.scenario.JPSContext; - -public class MetaDataAnnotator implements Prefixes { - - /** - * Logger for error output. - */ - private static final Logger LOGGER = LogManager.getLogger(MetaDataAnnotator.class); - - private static MetaDataAnnotator instance = null; - private SparqlOverHttpService sparqlService = null; - private String datasetUrl = null; - - static synchronized MetaDataAnnotator getInstance() { - if (instance == null) { - instance = new MetaDataAnnotator(); - } - return instance; - } - - private MetaDataAnnotator() { - //String datasetUrl = "http://localhost:8080/rdfdataset/jpsmetadata"; - //String datasetUrl = KeyValueManager.get(IKeys.URL_RDF_METADATA); - String oldDatasetUrl = "http://localhost:8080/rdf4j-server/repositories/jpsmetadata"; - sparqlService = new SparqlOverHttpService(RDFStoreType.RDF4J, oldDatasetUrl); - datasetUrl = KeyValueManager.get(IKeys.DATASET_META_URL); - } - - public static SparqlOverHttpService getSparqlService() { - //return getInstance().sparqlService; - return null; - } - - public static String getMetadataSetUrl() { - return getInstance().datasetUrl; - } - - public static void update(String sparql) { - //MetaDataAnnotator.getInstance().sparqlService.executePost(sparql); - AccessAgentCaller.update(getMetadataSetUrl(), null, sparql); - } - - public static void annotateWithTimeAndAgent(String iriTarget, String time, String iriCreatingAgent) { - String sparql = getSparqlInsertFull(iriTarget, null, time, iriCreatingAgent, false, time, null, null, null, null); - update(sparql); - } - - public static void annotate(String iriTarget, MediaType mediaType, String iriCreatingAgent, boolean addJPSContext, List topics) { - String sparql = getSparqlInsert(iriTarget, null, null, iriCreatingAgent, addJPSContext, topics, null, null); - update(sparql); - } - - public static void annotate(String iriTarget, MediaType mediaType, String iriCreatingAgent, boolean addJPSContext, List topics, String creationTime) { - String sparql = getSparqlInsert(iriTarget, null, creationTime, iriCreatingAgent, addJPSContext, topics, null, null); - update(sparql); - } - - public static String getSparqlInsert(String iriTarget, MediaType mediaType, String creationTime, String iriCreatingAgent, - boolean addJPSContext, List topics, List prefixes, List triples) { - - long millis = System.currentTimeMillis(); - if (creationTime == null) { - creationTime = getTimeInXsdTimeStampFormat(millis); - } - - String simulationTime = creationTime; - String iriScenario = JPSContext.getScenarioUrl(); - if (addJPSContext) { - // if the JPS context specifies a simulation time, overtake it - String contextTime = JPSContext.getSimulationTime(); - if ((contextTime != null) && !contextTime.isEmpty()) { - simulationTime = contextTime; - } - - } - - return getSparqlInsertFull(iriTarget, mediaType, creationTime, iriCreatingAgent, addJPSContext, simulationTime, iriScenario, topics, prefixes, triples); - } - - /** - * @param prefixes - * @param iriTarget the resource that should be annotated - required - * @param mediaType - * @param creationTime the real time at which the target resource was created - required - * @param iriCreatingAgent - * @param simulationTime the time for which the simulation run (possibly in the past or future) - * - required - * @param iriScenario - * @param topics - * @param triples - * @return - */ - public static String getSparqlInsertFull(String iriTarget, MediaType mediaType, String creationTime, String iriCreatingAgent, - boolean addJPSContext, String simulationTime, String iriScenario, List topics, List prefixes, List triples) { - - LOGGER.info("annotating target = " + iriTarget + " with media type = " + mediaType - + ", creation time = " + creationTime + ", creatingAgent = " + iriCreatingAgent - + ", simulation time = " + simulationTime + ", scenario = " + iriScenario); - - StringBuffer sparql = new StringBuffer(); - sparql.append(PrefixToUrlMap.getPrefixForSPARQL(DCTERMS)); - //sparql.append(PrefixToUrlMap.getPrefixForSPARQL(FOAF)); - //sparql.append(PrefixToUrlMap.getPrefixForSPARQL(TIME)); - sparql.append(PrefixToUrlMap.getPrefixForSPARQL(XSD)); - //sparql.append(PrefixToUrlMap.getPrefixForSPARQL(JPSAGEN)); - - if (prefixes != null) { - for (String current : prefixes) { - sparql.append(current); - if (!current.endsWith("\n")) { - sparql.append(" \r\n"); - } - } - } - if (iriScenario == null) { - sparql.append("INSERT DATA { \r\n"); - } else { - sparql.append("INSERT DATA { GRAPH <" + iriScenario + "> { \r\n"); - } - - if (mediaType != null) { - sparql.append("<" + iriTarget + "> dcterms:format \"" + mediaType.type + "\" . \r\n"); - } - sparql.append("<" + iriTarget + "> dcterms:created \"" + creationTime + "\"^^xsd:dateTime . \r\n"); - if (iriCreatingAgent != null) { - sparql.append("<" + iriCreatingAgent + "> a dcterms:Agent . \r\n"); - //sparql.append("<" + iriCreatingAgent + "> a JPSAGEN:Service . \r\n"); - sparql.append("<" + iriCreatingAgent + "> a . \r\n"); - sparql.append("<" + iriTarget + "> dcterms:creator <" + iriCreatingAgent + "> . \r\n"); - } - //TODO-AE SC URGENT 20190918 discuss with Kevin what have to be changed for the ADMS soft sensor - //sparql.append(" a time:Instant . \r\n"); - //sparql.append(" time:inXSDDateTime \"" + simulationTime + "\"^^xsd:dateTime . \r\n"); - //sparql.append("<" + iriTarget + "> time:hasTime . \r\n"); - sparql.append("<" + iriTarget + "> dcterms:date \"" + simulationTime + "\"^^xsd:dateTime . \r\n"); - // TODO-AE SC URGENT 20190916 Scenario Ontology and Namespace doesn't exist. We lend terms from other ontologies here - if (iriScenario != null) { - //sparql.append("<" + iriScenario + "> a JPSAGEN:Scenario . \r\n"); - sparql.append("<" + iriTarget + "> dcterms:isPartOf <" + iriScenario + "> . \r\n"); - } - List optionalTriples = new ArrayList(); - if (topics != null) { - for (String current : topics) { - //optionalTriples.add("<" + iriTarget + "> foaf:topic " + current + " ."); - optionalTriples.add("<" + iriTarget + "> dcterms:subject <" + current + "> ."); - } - } - if (triples != null) { - optionalTriples.addAll(triples); - - } - for (String current : optionalTriples) { - sparql.append(current + " \r\n"); - } - - if (iriScenario == null) { - sparql.append("} \r\n"); - } else { - sparql.append("} } \r\n"); - } - - //return replaceByUUID(sparql.toString(), "?time"); - return sparql.toString(); - } - - public static String getTimeInXsdTimeStampFormat(long millis) { - Date date = new Date(millis); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - format.setTimeZone(TimeZone.getTimeZone("GMT+0:00")); - String timestamp = format.format(date); - return timestamp.replace(" ", "T"); - } - - public static long getMillisFromXsdTimeStampFormat(String timestamp) { - timestamp = timestamp.replace("T", " "); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - format.setTimeZone(TimeZone.getTimeZone("GMT+0:00")); - Date date; - try { - date = format.parse(timestamp); - } catch (ParseException e) { - throw new JPSRuntimeException(e.getMessage(), e); - } - return date.getTime(); - } -} \ No newline at end of file diff --git a/src/main/java/uk/ac/cam/cares/jps/base/annotate/MetaDataQuery.java b/src/main/java/uk/ac/cam/cares/jps/base/annotate/MetaDataQuery.java deleted file mode 100644 index bbed04b5d..000000000 --- a/src/main/java/uk/ac/cam/cares/jps/base/annotate/MetaDataQuery.java +++ /dev/null @@ -1,220 +0,0 @@ -package uk.ac.cam.cares.jps.base.annotate; - -import java.util.List; - -import org.apache.jena.query.QueryExecution; -import org.apache.jena.query.QueryExecutionFactory; -import org.apache.jena.query.ResultSet; - -import uk.ac.cam.cares.jps.base.config.IKeys; -import uk.ac.cam.cares.jps.base.config.KeyValueManager; -import uk.ac.cam.cares.jps.base.discovery.MediaType; -import uk.ac.cam.cares.jps.base.query.JenaResultSetFormatter; -import uk.ac.cam.cares.jps.base.query.AccessAgentCaller; -import uk.ac.cam.cares.jps.base.query.sparql.PrefixToUrlMap; -import uk.ac.cam.cares.jps.base.query.sparql.Prefixes; - -public class MetaDataQuery implements Prefixes { - - public static String query(String sparql, String metadataSetUrl) { - if (metadataSetUrl.isEmpty()) { - //metadataSetUrl = MetaDataAnnotator.getMetadataSetUrl(); - return AccessAgentCaller.query(MetaDataAnnotator.getMetadataSetUrl(), null, sparql); - - } - //return KnowledgeBaseClient.query(metadataSetUrl, null, sparql); - String datasetUrl = KeyValueManager.get(IKeys.URL_RDF_METADATA); - QueryExecution q = QueryExecutionFactory.sparqlService(datasetUrl,sparql); - ResultSet rs_metadata = q.execSelect(); - return JenaResultSetFormatter.convertToJSONW3CStandard(rs_metadata); - } - - public static String query(String sparql) { - //SparqlOverHttpService sparqlService = MetaDataAnnotator.getSparqlService(); - //return sparqlService.executeGet(sparql); - return AccessAgentCaller.query(MetaDataAnnotator.getMetadataSetUrl(), null, sparql); - } - - public static String getSparqlQueryResources(MediaType mediaType, String fromCreationTime, String toCreationTime, - String iriCreatingAgent, String fromSimulationTime, String toSimulationTime, String iriScenario, List topics) { - - StringBuffer sparql = new StringBuffer(); - sparql.append(PrefixToUrlMap.getPrefixForSPARQL(DCTERMS)); - sparql.append(PrefixToUrlMap.getPrefixForSPARQL(XSD)); - - sparql.append("SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n"); - sparql.append("WHERE { \r\n"); - - sparql.append("OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n"); - if (mediaType != null) { - sparql.append("?resource dcterms:format \"" + mediaType.type + "\" . \r\n"); - } - - sparql.append("OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n"); - if (fromCreationTime != null) { - sparql.append("FILTER ( ?creationTime >= \"" + fromCreationTime + "\"^^xsd:dateTime ) \r\n"); - } - if (toCreationTime != null) { - sparql.append("FILTER ( ?creationTime <= \"" + toCreationTime + "\"^^xsd:dateTime ) \r\n"); - } - - sparql.append("OPTIONAL {?resource dcterms:creator ?agent .}. \r\n"); - if (iriCreatingAgent != null) { - sparql.append("?resource dcterms:creator <" + iriCreatingAgent + "> . \r\n"); - } - - sparql.append("OPTIONAL {?resource dcterms:date ?simulationTime .}. \r\n"); - if (fromSimulationTime != null) { - sparql.append("FILTER ( ?simulationTime >= \"" + fromSimulationTime + "\"^^xsd:dateTime ) \r\n"); - } - if (toSimulationTime != null) { - sparql.append("FILTER ( ?simulationTime <= \"" + toSimulationTime + "\"^^xsd:dateTime ) \r\n"); - } - - sparql.append("OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n"); - if (iriScenario != null) { - sparql.append("?resource dcterms:isPartOf <" + iriScenario + "> . \r\n"); - } - - if (topics != null) { - for (String current : topics) { - sparql.append("?resource dcterms:subject <" + current + "> ."); - } - } - - sparql.append("} ORDER BY DESC(?creationTime) \r\n"); - sparql.append("LIMIT 1000"); - - return sparql.toString(); - } - - // TODO-AE SC URGENT 20190918 discuss with Kevin and maybe delete the next two methods - public static String queryResources(String iriCreatingAgent, String fromSimulationTime, String toSimulationTime) { - String sparql = getSparqlQueryResources(null, null, null, iriCreatingAgent, fromSimulationTime, toSimulationTime, null, null); - //System.out.println(sparql); - return query(sparql); - } - - public static String queryResources(MediaType mediaType, String fromCreationTime, String toCreationTime, - String iriCreatingAgent, String fromSimulationTime, String toSimulationTime, String iriScenario, List topics) { - - String sparql = getSparqlQueryResources(mediaType, fromCreationTime, toCreationTime, iriCreatingAgent, fromSimulationTime, toSimulationTime, iriScenario, topics); - //System.out.println(sparql); - return query(sparql); - } - - public static String queryOldResources(String iriCreatingAgent, String fromSimulationTime, String toSimulationTime,List topics) { - //String sparql = getSparqlMetaDataResources(fromSimulationTime, toSimulationTime, iriCreatingAgent); - String sparql = getSparqlQueryResourcesOldRepository(null, null, null, iriCreatingAgent, fromSimulationTime, toSimulationTime, null, topics); - return query(sparql, KeyValueManager.get(IKeys.URL_RDF_METADATA)); - } - - public static String getSparqlQueryResourcesOldRepository(MediaType mediaType, String fromCreationTime, String toCreationTime, - String iriCreatingAgent, String fromSimulationTime, String toSimulationTime, String iriScenario, List topics) { - - StringBuffer sparql = new StringBuffer(); - sparql.append(PrefixToUrlMap.getPrefixForSPARQL(DCTERMS)); - sparql.append(PrefixToUrlMap.getPrefixForSPARQL(XSD)); - sparql.append("PREFIX j1: \r\n"); - - sparql.append("SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n"); - sparql.append("WHERE { \r\n"); - - sparql.append("OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n"); - if (mediaType != null) { - sparql.append("?resource dcterms:format \"" + mediaType.type + "\" . \r\n"); - } - - sparql.append("OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n"); - if (fromCreationTime != null) { - sparql.append("FILTER ( ?creationTime >= \"" + fromCreationTime + "\"^^xsd:dateTime ) \r\n"); - } - if (toCreationTime != null) { - sparql.append("FILTER ( ?creationTime <= \"" + toCreationTime + "\"^^xsd:dateTime ) \r\n"); - } - - sparql.append("OPTIONAL {?resource dcterms:creator ?agent .}. \r\n"); - if (iriCreatingAgent != null) { - sparql.append("?resource dcterms:creator <" + iriCreatingAgent + "> . \r\n"); - } - - sparql.append("OPTIONAL {?resource j1:hasTime ?inst .}. \r\n"); - sparql.append("OPTIONAL {?inst j1:inXSDDateTime ?simulationTime .}. \r\n"); - if (fromSimulationTime != null) { - sparql.append("FILTER ( ?simulationTime >= \"" + fromSimulationTime + "\"^^xsd:dateTime ) \r\n"); - } - if (toSimulationTime != null) { - sparql.append("FILTER ( ?simulationTime <= \"" + toSimulationTime + "\"^^xsd:dateTime ) \r\n"); - } - sparql.append("FILTER ( regex(str(?resource), \"C://JPS_DATA/workingdir/JPS_SCENARIO\") ) \r\n"); - sparql.append("OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n"); - if (iriScenario != null) { - sparql.append("?resource dcterms:isPartOf <" + iriScenario + "> . \r\n"); - } - - if (topics != null) { - for (String current : topics) { - sparql.append("?resource dcterms:subject <" + current + "> . \r\n"); - } - } - - sparql.append("} ORDER BY DESC(?simulationTime) \r\n"); - sparql.append("LIMIT 1000"); - - return sparql.toString(); - } - - // TODO-AE SC URGENT 20190919 discuss with Kevin, delete is not required any more - private static String getSparqlMetaDataResources(String timefrom, String timeto, String agentiri) { - - String query=null; - String filterline="filter(?time >= \""+timefrom+"\"^^xsd:dateTime && ?time <= \""+timeto+"\"^^xsd:dateTime )."; - //String agentiri = result.optString("agent","none"); - String optionalline=""; - String limitline=""; - if (agentiri != null){ - optionalline="?directory dcterms:creator <" + agentiri + "> . \r\n"; - } - if(timefrom.contains("none")&&timeto.contains("none")) { - - query= "PREFIX j1:" - +"PREFIX xsd:" - +"PREFIX dcterms:" - - - + "SELECT ?directory ?time ?agent " - + "WHERE {?directory j1:hasTime ?inst ." - + "?inst j1:inXSDDateTime ?time." - + "OPTIONAL {?directory dcterms:creator ?agent .}.\r\n" - +optionalline - + "}" - +"ORDER BY DESC(?time) " - +"LIMIT 1"; - } else { - if(timefrom.contains("none")){ - filterline="filter(?time <= \""+timeto+"\"^^xsd:dateTime )."; - limitline="LIMIT 1"; - } - else if(timeto.contains("none")){ - filterline="filter(?time >= \""+timefrom+"\"^^xsd:dateTime )."; - } - - query= "PREFIX j1: " - +"PREFIX xsd: " - +"PREFIX dcterms: " - - + "SELECT ?directory ?time ?agent " - + "WHERE {?directory j1:hasTime ?inst ." - + "?inst j1:inXSDDateTime ?time." - + filterline - + "OPTIONAL {?directory dcterms:creator ?agent .}.\r\n" - +optionalline - + "}" - +"ORDER BY DESC(?time) " - +limitline; - - } - - return query; - } -} diff --git a/src/test/java/uk/ac/cam/cares/jps/base/annotate/MetaDataAnnotatorTest.java b/src/test/java/uk/ac/cam/cares/jps/base/annotate/MetaDataAnnotatorTest.java deleted file mode 100644 index 4e47257e5..000000000 --- a/src/test/java/uk/ac/cam/cares/jps/base/annotate/MetaDataAnnotatorTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package uk.ac.cam.cares.jps.base.annotate; - -import java.util.Arrays; - -import org.junit.Assert; -import org.junit.Test; - -import uk.ac.cam.cares.jps.base.discovery.MediaType; - -public class MetaDataAnnotatorTest { - - @Test - public void testSparqlOverHttpService() { - Assert.assertNull(MetaDataAnnotator.getSparqlService()); - } - - @Test - public void testGetSparqlInsertFull() { - String ExpectedResult = "PREFIX dcterms:\r\nPREFIX xsd:" - + "\r\nprefix1 \r\nprefix2 \r\nINSERT DATA { GRAPH { \r\n dcterms:format \"text/csv\" . \r\n " - + "dcterms:created \"testCreationTime\"^^xsd:dateTime . \r\n a dcterms:Agent . \r\n a " - + " . \r\n " - + "dcterms:creator . \r\n dcterms:date \"testSimulationTime\"^^xsd:dateTime . \r\n " - + "dcterms:isPartOf . \r\n dcterms:subject . \r\n " - + "dcterms:subject . \r\ntriple1 \r\ntriple2 \r\n} } \r\n"; - - String Result = MetaDataAnnotator.getSparqlInsertFull("testTarget", MediaType.TEXT_CSV, "testCreationTime", "testAgent", - true, "testSimulationTime", "testScenario", Arrays.asList("topic1","topic2"), Arrays.asList("prefix1","prefix2"), Arrays.asList("triple1","triple2")); - - Assert.assertEquals(Result, ExpectedResult); - } - - long timeInMillis = 1628150245696L; - String timeInXsdStampFormat = "2021-08-05T07:57:25.696"; - - @Test - public void testGetTimeInXsdTimeStampFormat() { - Assert.assertEquals(MetaDataAnnotator.getTimeInXsdTimeStampFormat(timeInMillis), timeInXsdStampFormat); - } - - @Test - public void testGetMillisFromXsdTimeStampFormat() { - Assert.assertEquals(MetaDataAnnotator.getMillisFromXsdTimeStampFormat(timeInXsdStampFormat), timeInMillis); - } - -} diff --git a/src/test/java/uk/ac/cam/cares/jps/base/annotate/MetaDataQueryTest.java b/src/test/java/uk/ac/cam/cares/jps/base/annotate/MetaDataQueryTest.java deleted file mode 100644 index ac987335b..000000000 --- a/src/test/java/uk/ac/cam/cares/jps/base/annotate/MetaDataQueryTest.java +++ /dev/null @@ -1,301 +0,0 @@ -package uk.ac.cam.cares.jps.base.annotate; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Arrays; - -import org.junit.Assert; -import org.junit.Test; -import org.mockito.MockedStatic; -import org.mockito.Mockito; - -import uk.ac.cam.cares.jps.base.config.IKeys; -import uk.ac.cam.cares.jps.base.config.KeyValueMap; -import uk.ac.cam.cares.jps.base.discovery.MediaType; - -public class MetaDataQueryTest { - - @Test - public void testGetSparqlQueryResources() { - // Two cases are distinguished. One with non null arguments and one with null - // arguments - - String expected_nullArg = "PREFIX dcterms:\r\n" - + "PREFIX xsd:\r\n" - + "SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n" - + "WHERE { \r\n" - + "OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n" - + "OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n" - + "OPTIONAL {?resource dcterms:creator ?agent .}. \r\n" - + "OPTIONAL {?resource dcterms:date ?simulationTime .}. \r\n" - + "OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n" - + "} ORDER BY DESC(?creationTime) \r\n" - + "LIMIT 1000"; - - String actual_nullArg = MetaDataQuery.getSparqlQueryResources(null, null, - null, null, null, null, null, null); - - String expected = "PREFIX dcterms:\r\n" - + "PREFIX xsd:\r\n" - + "SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n" - + "WHERE { \r\n" - + "OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n" - + "?resource dcterms:format \"text/turtle\" . \r\n" - + "OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n" - + "FILTER ( ?creationTime >= \"testFromCreationTime\"^^xsd:dateTime ) \r\n" - + "FILTER ( ?creationTime <= \"testToCreationTime\"^^xsd:dateTime ) \r\n" - + "OPTIONAL {?resource dcterms:creator ?agent .}. \r\n" - + "?resource dcterms:creator . \r\n" - + "OPTIONAL {?resource dcterms:date ?simulationTime .}. \r\n" - + "FILTER ( ?simulationTime >= \"testFromSimulationTime\"^^xsd:dateTime ) \r\n" - + "FILTER ( ?simulationTime <= \"testToSimulationTime\"^^xsd:dateTime ) \r\n" - + "OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n" - + "?resource dcterms:isPartOf . \r\n" - + "?resource dcterms:subject ." - + "?resource dcterms:subject ." - + "?resource dcterms:subject ." - + "} ORDER BY DESC(?creationTime) \r\n" - + "LIMIT 1000"; - - String actual = MetaDataQuery.getSparqlQueryResources(MediaType.TEXT_TURTLE, "testFromCreationTime", - "testToCreationTime", - "testIriCreatingAgent", "testFromSimulationTime", "testToSimulationTime", "testIriScenario", - Arrays.asList("topic1", "topic2", "topic3")); - - Assert.assertEquals(expected_nullArg, actual_nullArg); - Assert.assertEquals(expected, actual); - } - - @Test - public void testGetSparqlQueryResourcesOldRepository() { - // Two cases are distinguished. One with non null arguments and one with null - // arguments - - String expected_nullArg = "PREFIX dcterms:\r\n" - + "PREFIX xsd:\r\n" - + "PREFIX j1: \r\n" - + "SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n" - + "WHERE { \r\n" - + "OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n" - + "OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n" - + "OPTIONAL {?resource dcterms:creator ?agent .}. \r\n" - + "OPTIONAL {?resource j1:hasTime ?inst .}. \r\n" - + "OPTIONAL {?inst j1:inXSDDateTime ?simulationTime .}. \r\n" - + "FILTER ( regex(str(?resource), \"C://JPS_DATA/workingdir/JPS_SCENARIO\") ) \r\n" - + "OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n" - + "} ORDER BY DESC(?simulationTime) \r\n" - + "LIMIT 1000"; - - String actual_nullArg = MetaDataQuery.getSparqlQueryResourcesOldRepository(null, null, - null, null, null, null, null, null); - - String expected = "PREFIX dcterms:\r\n" - + "PREFIX xsd:\r\n" - + "PREFIX j1: \r\n" - + "SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n" - + "WHERE { \r\n" - + "OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n" - + "?resource dcterms:format \"text/turtle\" . \r\n" - + "OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n" - + "FILTER ( ?creationTime >= \"testFromCreationTime\"^^xsd:dateTime ) \r\n" - + "FILTER ( ?creationTime <= \"testToCreationTime\"^^xsd:dateTime ) \r\n" - + "OPTIONAL {?resource dcterms:creator ?agent .}. \r\n" - + "?resource dcterms:creator . \r\n" - + "OPTIONAL {?resource j1:hasTime ?inst .}. \r\n" - + "OPTIONAL {?inst j1:inXSDDateTime ?simulationTime .}. \r\n" - + "FILTER ( ?simulationTime >= \"testFromSimulationTime\"^^xsd:dateTime ) \r\n" - + "FILTER ( ?simulationTime <= \"testToSimulationTime\"^^xsd:dateTime ) \r\n" - + "FILTER ( regex(str(?resource), \"C://JPS_DATA/workingdir/JPS_SCENARIO\") ) \r\n" - + "OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n" - + "?resource dcterms:isPartOf . \r\n" - + "?resource dcterms:subject . \r\n" - + "?resource dcterms:subject . \r\n" - + "?resource dcterms:subject . \r\n" - + "} ORDER BY DESC(?simulationTime) \r\n" - + "LIMIT 1000"; - - String actual = MetaDataQuery.getSparqlQueryResourcesOldRepository(MediaType.TEXT_TURTLE, - "testFromCreationTime", - "testToCreationTime", "testIriCreatingAgent", "testFromSimulationTime", - "testToSimulationTime", "testIriScenario", Arrays.asList("topic1", "topic2", "topic3")); - - Assert.assertEquals(expected_nullArg, actual_nullArg); - Assert.assertEquals(expected, actual); - - } - - @Test // This unit test is for the query method that accepts one argument only - public void testQuery1() { - String sparql = "test"; - String expected = "queryResultString"; - // String meta_url= KeyValueMap.getInstance().get(IKeys.DATASET_META_URL); - try (MockedStatic mtq = Mockito.mockStatic(MetaDataQuery.class)) { - mtq.when(() -> MetaDataQuery.query(sparql)).thenReturn(expected); - String actual = MetaDataQuery.query(sparql); - Assert.assertEquals(expected, actual); - } - } - - @Test // This unit test is for the query method that accepts two arguments only - public void testQuery2() { - // Two cases are distinguished. One with an empty metadataseturl and one which - // is not - - // The case with a non null metadataseturl also has to be mocked because if the - // server is - // inaccessible an HTTP exception is thrown - String sparql = "PREFIX dcterms: \r\n" - + "PREFIX xsd: \r\n" - + "PREFIX j1: \r\n" - + "SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n" - + "WHERE { \r\n" - + "OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n" - + "OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n" - + "OPTIONAL {?resource dcterms:creator ?agent .}. \r\n" - + "OPTIONAL {?resource j1:hasTime ?inst .}. \r\n" - + "OPTIONAL {?inst j1:inXSDDateTime ?simulationTime .}. \r\n" - + "FILTER ( regex(str(?resource), \"C://JPS_DATA/workingdir/JPS_SCENARIO\") ) \r\n" - + "OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n" - + "} ORDER BY DESC(?simulationTime) \r\n" - + "LIMIT 1000"; - String metadataSetUrl = KeyValueMap.getInstance().get(IKeys.URL_RDF_METADATA); - String expected1 = "expectedResult"; - try (MockedStatic mtq = Mockito.mockStatic(MetaDataQuery.class)) { - mtq.when(() -> MetaDataQuery.query(sparql, metadataSetUrl)).thenReturn(expected1); - String actual1 = MetaDataQuery.query(sparql, metadataSetUrl); - Assert.assertEquals(expected1, actual1); - } - // String meta_url= KeyValueMap.getInstance().get(IKeys.DATASET_META_URL); - String expected2 = "queryResultString"; - try (MockedStatic mtq = Mockito.mockStatic(MetaDataQuery.class)) { - mtq.when(() -> MetaDataQuery.query(sparql, "")).thenReturn(expected2); - String actual2 = MetaDataQuery.query(sparql, ""); - Assert.assertEquals(expected2, actual2); - } - } - - @Test // This unit test is for the queryResources method that accepts eight arguments - public void testQueryResources1() { - - String sparql1 = "PREFIX dcterms:\r\n" - + "PREFIX xsd:\r\n" - + "SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n" - + "WHERE { \r\n" - + "OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n" - + "?resource dcterms:format \"text/turtle\" . \r\n" - + "OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n" - + "FILTER ( ?creationTime >= \"testFromCreationTime\"^^xsd:dateTime ) \r\n" - + "FILTER ( ?creationTime <= \"testToCreationTime\"^^xsd:dateTime ) \r\n" - + "OPTIONAL {?resource dcterms:creator ?agent .}. \r\n" - + "?resource dcterms:creator . \r\n" - + "OPTIONAL {?resource dcterms:date ?simulationTime .}. \r\n" - + "FILTER ( ?simulationTime >= \"testFromSimulationTime\"^^xsd:dateTime ) \r\n" - + "FILTER ( ?simulationTime <= \"testToSimulationTime\"^^xsd:dateTime ) \r\n" - + "OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n" - + "?resource dcterms:isPartOf . \r\n" - + "?resource dcterms:subject ." - + "} ORDER BY DESC(?creationTime) \r\n" - + "LIMIT 1000"; - - String expected = "queryResultString"; - - try (MockedStatic mtq = Mockito.mockStatic(MetaDataQuery.class, Mockito.CALLS_REAL_METHODS)) { - mtq.when(() -> MetaDataQuery.query(sparql1)).thenReturn(expected); - - String actual = MetaDataQuery.queryResources(MediaType.TEXT_TURTLE, "testFromCreationTime", - "testToCreationTime", - "testIriCreatingAgent", "testFromSimulationTime", "testToSimulationTime", - "testIriScenario", Arrays.asList("topic1")); - - Assert.assertEquals(expected, actual); - } - } - - @Test // This unit test is for the queryResources method that accepts only three - // arguments - public void testQueryResources2() { - - String sparql1 = "PREFIX dcterms:\r\n" - + "PREFIX xsd:\r\n" - + "SELECT ?resource ?mediatype ?creationTime ?agent ?simulationTime ?scenario \r\n" - + "WHERE { \r\n" - + "OPTIONAL {?resource dcterms:format ?mediatype .}. \r\n" - + "OPTIONAL {?resource dcterms:created ?creationTime .}. \r\n" - + "OPTIONAL {?resource dcterms:creator ?agent .}. \r\n" - + "?resource dcterms:creator . \r\n" - + "OPTIONAL {?resource dcterms:date ?simulationTime .}. \r\n" - + "FILTER ( ?simulationTime >= \"testFromSimulationTime\"^^xsd:dateTime ) \r\n" - + "FILTER ( ?simulationTime <= \"testToSimulationTime\"^^xsd:dateTime ) \r\n" - + "OPTIONAL {?resource dcterms:isPartOf ?scenario .}. \r\n" - + "} ORDER BY DESC(?creationTime) \r\n" - + "LIMIT 1000"; - - String expected = "queryResultString"; - try (MockedStatic mtq = Mockito.mockStatic(MetaDataQuery.class, Mockito.CALLS_REAL_METHODS)) { - mtq.when(() -> MetaDataQuery.query(sparql1)).thenReturn(expected); - String actual = MetaDataQuery.queryResources("testIriCreatingAgent", "testFromSimulationTime", - "testToSimulationTime"); - Assert.assertEquals(expected, actual); - } - - } - - @Test - public void testQueryOldResources() { - // This method has to be mocked because if the server is not accessible then a - // HTTP exception is thrown. - String expected = "queryResultString"; - try (MockedStatic mtq = Mockito.mockStatic(MetaDataQuery.class)) { - mtq.when(() -> MetaDataQuery.queryOldResources(null, null, null, null)).thenReturn(expected); - String actual = MetaDataQuery.queryOldResources(null, null, null, null); - Assert.assertEquals(expected, actual); - } - } - - @Test - public void testGetSparqlMetaDataResources() - throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { - MetaDataQuery mdq = new MetaDataQuery(); - Assert.assertNotNull(mdq.getClass().getDeclaredMethod("getSparqlMetaDataResources", String.class, String.class, - String.class)); - Method getSpaMetDatRes = mdq.getClass().getDeclaredMethod("getSparqlMetaDataResources", String.class, - String.class, String.class); - getSpaMetDatRes.setAccessible(true); - - // First case where agentIri is not null and both time arguments contain the - // string none - String expectedQuery1 = "PREFIX j1:" - + "PREFIX xsd:" - + "PREFIX dcterms:" - + "SELECT ?directory ?time ?agent " - + "WHERE {?directory j1:hasTime ?inst ." - + "?inst j1:inXSDDateTime ?time." - + "OPTIONAL {?directory dcterms:creator ?agent .}.\r\n" - + "?directory dcterms:creator . \r\n" - + "}" - + "ORDER BY DESC(?time) " - + "LIMIT 1"; - - // Second case where agentIri is null but one time argument contains the string - // none - String expectedQuery2 = "PREFIX j1: " - + "PREFIX xsd: " - + "PREFIX dcterms: " - + "SELECT ?directory ?time ?agent " - + "WHERE {?directory j1:hasTime ?inst ." - + "?inst j1:inXSDDateTime ?time." - + "filter(?time <= \"" + "" + "\"^^xsd:dateTime )." - + "OPTIONAL {?directory dcterms:creator ?agent .}.\r\n" - + "" - + "}" - + "ORDER BY DESC(?time) " - + "LIMIT 1"; - - String actualQuery1 = getSpaMetDatRes.invoke(mdq, "testTimeFromnone", "testTimeTonone", "testAgentIri") - .toString(); - String actualQuery2 = getSpaMetDatRes.invoke(mdq, "testTimeFromnone", "", null).toString(); - Assert.assertEquals(expectedQuery1, actualQuery1); - Assert.assertEquals(expectedQuery2, actualQuery2); - - } -}