/******************************************************************************* * Copyright 2014 Miami-Dade County * * 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 org.sharegov.cirm.rdb; import static org.sharegov.cirm.OWL.fullIri; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Date; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import mjson.Json; import org.junit.Test; import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.model.EntityType; import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLClass; import org.semanticweb.owlapi.model.OWLDataFactory; import org.semanticweb.owlapi.model.OWLDataProperty; import org.semanticweb.owlapi.model.OWLDatatype; import org.semanticweb.owlapi.model.OWLEntity; import org.semanticweb.owlapi.model.OWLLiteral; import org.semanticweb.owlapi.model.OWLNamedIndividual; import org.semanticweb.owlapi.model.OWLNamedObject; import org.semanticweb.owlapi.model.OWLObjectProperty; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.model.OWLOntologyManager; import org.semanticweb.owlapi.vocab.OWL2Datatype; import org.sharegov.cirm.BOntology; import org.sharegov.cirm.OWL; import org.sharegov.cirm.Refs; import org.sharegov.cirm.rest.OperationService; import org.sharegov.cirm.utils.GenUtils; public class QueryTranslatorTest { @Test public void testPattern() { Json json = Json.object(); json.set("type", "Garbage_Missed_Complaint"); //json.set("hasDateCreated", "between(\"2011-06-15T19:18:06.552Z\",\"2011-06-15T19:18:06.552Z\")"); json.set("hasDateCreated", "=\"2011-09-19T12:25:54.000-04:00\""); json.set("hasDateLastModified", "=\"2011-09-19T12:25:54.000-04:00\""); json.set("currentPage",2); json.set("itemsPerPage",10); System.out.println(json); OperationService op = new OperationService(); RelationalStore store = op.getPersister().getStore(); //RelationalStore store = RelationalOWLPersister.getInstance(fullIri("GICDWTestDatabase")).getStore(); Query q = new QueryTranslator().translate(json, store); System.out.println(q.getStatement().getSql().SQL()); } @Test public void testingWithNewRDB() throws SQLException { Json json = Json.object(); //json.set("hasDateCreated", ">= 2012-06-27"); json.set("type", "legacy:ServiceCase"); json.set("currentPage",1); json.set("itemsPerPage",10); json.set("sortBy", "type"); json.set("sortDirection", "desc"); //json.set("legacy:hasGisDataId", 528603); /* json.set("legacy:hasServiceActivity", Json.object() .set("type","legacy:ServiceActivity") .set("legacy:isAssignedTo", "=\"boris\"") ); */ /* json.set("hasGeoPropertySet", Json.object() .set("type", "GeoPropertySet") //.set("GIS_CMAINT", "=\"CO\"") .set("GIS_STLGHT", "isNotNull(\"\")") //"between(\"2011-06-15T19:18:06.552Z\"; ); */ /* json.set("legacy:hasServiceCaseActor", Json.object() .set("type", "legacy:ServiceCaseActor") .set("atAddress", Json.object() .set("type", "Street_Address") .set("fullAddress", "11399 SW 66TH ST") ) ); */ // json.set("legacy:hasLegacyId", "11-00315072"); json.set("atAddress", Json.object() .set("type", "Street_Address") .set("sortBy", "Zip_Code") .set("sortDirection", "desc") .set("Zip_Code", 33165) // .set("Street_Name", "like(\"1ST\")") // .set("fullAddress", "8720 SW 41ST ST") // .set("Street_Address_City", Json.object().set("iri", "http://www.miamidade.gov/ontology#Miami_Dade_County")) ); OperationService op = new OperationService(); RelationalStore store = op.getPersister().getStore(); try { Query q = new QueryTranslator().translate(json, store); System.out.println(json.toString()); System.out.println("********************"); System.out.println(q.getStatement().getSql().SQL()); System.out.println("********************"); System.out.println(q.getStatement().getParameters()); System.out.println("********************"); //System.out.println(store.query(q, Refs.tempOntoManager.resolve().getOWLDataFactory())); } catch(Exception e) { e.printStackTrace(); } } @Test public void testingDispatchLookupASD() throws SQLException { Json json = Json.object(); //json.set("hasDateCreated", ">= 2012-06-27"); json.set("type", "legacy:ASCRUELT"); /* json.set("legacy:hasServiceActivity", Json.object() .set("type","legacy:ServiceActivity") .set("legacy:hasActivity", Json.object().set("iri","http://www.miamidade.gov/cirm/legacy#ASCRUELT_ASANDISP")) .set("legacy:hasOutcome", Json.object().set("iri","http://www.miamidade.gov/cirm/legacy#OUTCOME_ASDPUID1")) ); json.set("legacy:hasServiceActivity", Json.object() .set("type","legacy:ServiceActivity") .set("legacy:hasActivity", Json.object().set("iri","http://www.miamidade.gov/cirm/legacy#ASCRUELT_ASANDISP")) ); */ json.set("legacy:hasServiceActivity", Json.object() .set("type","legacy:ServiceActivity") .set("legacy:isAssignedTo", "e132216") ); OperationService op = new OperationService(); RelationalStore store = op.getPersister().getStore(); try { System.out.println("json is :"+json.toString()); System.out.println("********************"); Query q = new QueryTranslator().translate(json, store); System.out.println(q.getStatement().getSql().SQL()); System.out.println("********************"); System.out.println(q.getStatement().getParameters()); System.out.println("********************"); System.out.println(store.query(q, Refs.tempOntoManager.resolve().getOWLDataFactory())); } catch(Exception e) { e.printStackTrace(); } } @Test public void testingFQWithNewRDB() throws SQLException { //TOM testing Service Questions in Basic Search Json json = Json.object(); json.set("type", "legacy:ServiceCase"); json.set("legacy:hasServiceAnswer", Json.object() .set("type", "legacy:ServiceAnswer") .set("legacy:hasServiceField", Json.object() .set("type", "legacy:ServiceField") .set("iri", "http://www.miamidade.gov/cirm/legacy#TM74_CASENUM") ) .set("legacy:hasAnswerValue", "=\"201212000035\"" //Json.object() //.set("type", "http://www.w3.org/2001/XMLSchema#string") //.set("literal", "=\"201212000035") ) ); System.out.println(json.toString()); OperationService op = new OperationService(); RelationalStore store = op.getPersister().getStore(); Query q = new QueryTranslator().translate(json, store); System.out.println(q.getStatement().getSql().SQL()); System.out.println("***************************"); System.out.println(store.query(q, Refs.tempOntoManager.resolve().getOWLDataFactory())); } @Test public void testingFQWithOntoTranslatorJson() throws SQLException { //TOM testing Service Questions in Basic Search String question; Json json = Json.object(); json.set("type", "legacy:ServiceCase"); json.set("http://www.miamidade.gov/cirm/legacy#TM74_CASENUM", Json.object() .set("datatype", "http://www.w3.org/2001/XMLSchema#integer") .set("literal", "=\"201212000035\"") ); System.out.println(json.toString()); OperationService op = new OperationService(); RelationalStore store = op.getPersister().getStore(); Query q = new QueryTranslator().translate(json, store); System.out.println("***************************"); System.out.println(json); System.out.println("***************************"); System.out.println(q.getStatement().getSql().SQL()); System.out.println("***************************"); //System.out.println(store.query(q)); } @Test public void testPattern1() { Json json = Json.object(); json.set("type", "AnswerHubMarquee"); System.out.println(json); OperationService op = new OperationService(); RelationalStore store = op.getPersister().getStore(); //RelationalStore store = RelationalOWLPersister.getInstance(fullIri("CIRMTestDatabase")).getStore(); Query q = new QueryTranslator().translate(json, store); System.out.println(q.getStatement().getSql().SQL()); } @Test public void testTranslate() throws SQLException { Json json = Json.object(); json.set("type", "Inquiry"); // json.set("hasServiceRequestStatus", "ServiceRequestCompleted"); // json.set("hasServiceRequestStatus", Json.array("ServiceRequestCompleted", "ServiceRequestInProgress")); // json.set("hasDateCreated", "=\"2011-09-30T12:25:54.000-04:00\""); // json.set("sortBy","hasDateLastModified"); // json.set("hasDateLastModified", "between(\"2011-09-18T01:01:01.000-04:00\",\"2011-10-20T23:59:55.000-04:00\")"); // json.set("hasDateLastModified", // Json.array("<\"2011-09-30T12:25:54.000-04:00\"", "=\"2011-09-19T12:25:54.000-04:00\"")); json.set("atAddress", Json.object() .set("type", "Street_Address") .set("Street_Address_City", "Miami") // .set("Street_Address_City", Json.array("Miami", "Orlando")) .set("Street_Name", "like(\"1ST\")") // .set("Street_Name", Json.array("=\"1ST\"", "=\"10TH\"")) ); // json.set("hasParticipant", Json.object().set("type", "Participant").set("Name", "=\"Carl Lewis\"")); //ObjectProperty inside another objectProperty /* json.set("hasParticipant", Json.object() .set("type", "Participant") .set("Name", "=\"Carl Lewis\"") .set("atAddress", Json.object() .set("type", "Street_Address") .set("Street_Address_City", "Miami") ) ); */ System.out.println(json); OperationService op = new OperationService(); RelationalStore store = op.getPersister().getStore(); //RelationalStore store = RelationalOWLPersister.getInstance(fullIri("GICDWTestDatabase")).getStore(); Query q = new QueryTranslator().translate(json, store); //System.out.println(q.getStatement().getSql().SQL()); System.out.println(store.queryGetEntities(q, Refs.tempOntoManager.resolve().getOWLDataFactory()).values()); } @Test public void testMappingHasOne() throws OWLOntologyCreationException { Map<OWLObjectProperty,OWLNamedIndividual> hasOne = Mapping.hasOne(OWL.individual("CIRM_SR_PARTICIPANT"), OWL.individual("atAddress")); System.out.println(hasOne.size()); } @Test public void testMappingHasMany() throws OWLOntologyCreationException { Set<OWLObjectProperty> hasMany = Mapping.hasMany(OWL.individual("hasParticipant")); System.out.println(hasMany.size()); for (@SuppressWarnings("rawtypes") Iterator iterator = hasMany.iterator(); iterator.hasNext();) { OWLObjectProperty owlObjectProperty = (OWLObjectProperty) iterator.next(); System.out.println(owlObjectProperty.getIRI().getFragment()); } } @Test public void testTime() throws DatatypeConfigurationException { OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLDataFactory df = manager.getOWLDataFactory(); OWLLiteral literal = df.getOWLLiteral("2011-09-19T12:25:54.000-04:00", OWL2Datatype.XSD_DATE_TIME); System.out.println(literal.toString()); Date d = DatatypeFactory.newInstance().newXMLGregorianCalendar(literal.getLiteral()).toGregorianCalendar().getTime(); Timestamp t = new Timestamp(d.getTime()); System.out.println(t.toString()); } @Test public void testTranslation() { Json json = Json.object(); json.set("type", "Garbage_Missed_Complaint"); json.set("hasDateCreated", "between(\"2011-06-15T19:18:06.552Z\",\"2011-06-15T19:18:06.552Z\")"); //json.set("hasDateCreated", "greaterThan(\"2011-06-15T19:18:06.552Z\")"); //json.set("hasDateCreated", ">= 1"); System.out.println(json.toString()); RelationalStore store = RelationalOWLPersister.getInstance(fullIri("GICDWTestDatabase")).getStore(); QueryTranslator translator = new QueryTranslator(); Query query = translator.translate(json, store); System.out.println(query.getStatement().getSql().SQL()); System.out.println(OWLNamedIndividual.class.getName().toString()); System.out.println(OWLClass.class.getName().toString()); System.out.println(OWLDataProperty.class.getName().toString()); System.out.println(OWLObjectProperty.class.getName().toString()); System.out.println(OWLDatatype.class.getName().toString()); System.out.println(IRI.class.getName().toString()); System.out.println(EntityType.ANNOTATION_PROPERTY); } @Test public void testQuery() throws SQLException { Json json = Json.object(); json.set("type", "Garbage_Missed_Complaint"); json.set("hasDateCreated", "between('12-Jun-2011','18-Jun-2011')"); //json.set("hasDateCreated", ">= \"12-Jun-2011\""); System.out.println(json.toString()); RelationalStore store = RelationalOWLPersister.getInstance(fullIri("GICDWTestDatabase")).getStore(); QueryTranslator translator = new QueryTranslator(); Query query = translator.translate(json, store); System.out.println(store.queryGetEntities(query, Refs.tempOntoManager.resolve().getOWLDataFactory()).values()); } @Test public void testBorisQuery() throws SQLException { Json json = Json.object(); json.set("type","Inquiry"); json.set("sortBy","hasDateLastModified"); json.set("isCreatedBy","guest"); json.set("sortDirection","desc"); json.set("currentPage",1); json.set("itemsPerPage",20); json.set("hasStatus","*"); System.out.println(json.toString()); RelationalStore store = RelationalOWLPersister.getInstance(fullIri("GICDWTestDatabase")).getStore(); QueryTranslator translator = new QueryTranslator(); Query query = translator.translate(json, store); System.out.println(query.getStatement().getSql().SQL()); System.out.println(store.queryGetEntities(query, Refs.tempOntoManager.resolve().getOWLDataFactory()).values()); } @Test public void testComparable() { IRI iri = fullIri("Service_Request"); OWLNamedObject o = OWL.dataFactory().getOWLClass(iri); System.out.println(o.equals(iri)); } @Test public void testOntologyItems() { System.out.println(OWL.ontology().containsDataPropertyInSignature(fullIri("Street_Name1"))); } @Test public void testNoMappingTranslate() throws SQLException { RelationalStore store = RelationalOWLPersister.getInstance(fullIri("GICDWTestDatabase")).getStore(); Json json = Json.object(); json.set("type","Garbage_Missed_Complaint"); json.set("sortBy","hasDateLastModified"); //json.set("isCreatedBy","guest"); json.set("sortDirection","desc"); json.set("currentPage",1); json.set("itemsPerPage",20); json.set("hasServiceRequestStatus","*"); json.set("hasDateCreated", "06/14/2011"); Json atAddress = Json.object(); atAddress.set("type", "Street_Address"); atAddress.set("Street_Name", "1ST"); atAddress.set("Zip_Code", "33128"); json.set("atAddress", atAddress); System.out.println(json.toString()); QueryTranslator translator = new QueryTranslator(); Query query = translator.translate(json, store); System.out.println(query.getStatement().getSql().SQL()); System.out.println(store.queryGetEntities(query, Refs.tempOntoManager.resolve().getOWLDataFactory()).values()); } @Test public void testNoMappingTranslate2Properties() throws SQLException { RelationalStore store = RelationalOWLPersister.getInstance(fullIri("GICDWTestDatabase")).getStore(); Json atAddress = Json.object(); atAddress.set("type", "Street_Address"); atAddress.set("Street_Name", "1ST"); atAddress.set("Zip_Code", "33128"); System.out.println(atAddress.toString()); QueryTranslator translator = new QueryTranslator(); Query query = translator.translate(atAddress, store); System.out.println(query.getStatement().getSql().SQL()); System.out.println(store.queryGetEntities(query, Refs.tempOntoManager.resolve().getOWLDataFactory()).values()); } @Test public void testPagination() { Json paginationJson = Json.object(); Json paginationCriteria = Json.object().set("currentPage", 5).set("itemsPerPage", 20); GenUtils.pagination(paginationJson, paginationCriteria); System.out.println(paginationJson); } @Test public void testSRLookup() throws SQLException { String typeInd = "ServiceCase"; int SRID = 8772; //IRI iri = IRI.create("http://www.miamidade.gov/bo/"+typeInd+"/"+SRid+"#bo"); Json json = Json.object(); json.set("type", "legacy:"+typeInd); json.set("boid", SRID); System.out.println(json.toString()); RelationalOWLPersister persister = RelationalOWLPersister.getInstance(fullIri("GICDWTestDatabase")); RelationalStore store = persister.getStore(); Query q = new QueryTranslator().translate(json, store); OWLEntity e = store.queryGetEntities(q, Refs.tempOntoManager.resolve().getOWLDataFactory()).values().iterator().next(); System.out.println(e.toString()); OWLOntology o = persister.getBusinessObjectOntology(e.getIRI()); System.out.println("Total No. of axioms : "+o.getAxiomCount()); BOntology bo = new BOntology(o); Json finalJson = bo.toJSON(); System.out.println(finalJson.toString()); } @Test public void testJson() { Json json = Json.read("{\"hasServiceCaseActor\":[{\"Name\":\"Pw Neat Crew\",\"hasUpdatedDate\":\"2012-01-06T05:16:48.000-05:00\",\"hasOrderBy\":\"1.0\",\"hasLegacyId\":\"1132735711\",\"label\":\"bo\",\"hasServiceActor\":{\"participantEntityTable\":\"PERSONS\",\"label\":\"Citizen\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#CITIZEN\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceCaseActor/15159#bo\",\"hasCreatedDate\":\"2012-01-06T05:16:48.000-05:00\"},{\"hasUpdatedDate\":\"2012-01-06T05:16:48.000-05:00\",\"hasOrderBy\":\"3.0\",\"hasLegacyId\":\"1132735771\",\"label\":\"bo\",\"hasServiceActor\":{\"participantEntityTable\":\"PERSONS\",\"label\":\"Commissioner' s Office\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#COMMISH\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceCaseActor/15160#bo\",\"hasCreatedDate\":\"2012-01-06T05:16:48.000-05:00\"},{\"Name\":\"PUBLIC AT LARGE\",\"hasUpdatedDate\":\"2012-01-06T05:16:48.000-05:00\",\"hasOrderBy\":\"2.0\",\"hasLegacyId\":\"1132735708\",\"label\":\"bo\",\"hasServiceActor\":{\"participantEntityTable\":\"PERSONS\",\"label\":\"Originator\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#ORIGIN\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceCaseActor/15167#bo\",\"hasCreatedDate\":\"2012-01-06T05:16:48.000-05:00\"},{\"hasUpdatedDate\":\"2012-01-06T05:16:48.000-05:00\",\"hasOrderBy\":\"4.0\",\"hasLegacyId\":\"1132735774\",\"label\":\"bo\",\"hasServiceActor\":{\"participantEntityTable\":\"PERSONS\",\"label\":\"Employee\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#EMPLOYEE\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceCaseActor/15168#bo\",\"hasCreatedDate\":\"2012-01-06T05:16:48.000-05:00\"}],\"hasServiceAnswer\":[{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"If Intersection, enter streets in Street 1 and Street 2.\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_PWNOTE2\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15118#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Corridor is a street between 2 cross streets. Enter in Streets 1,2,3.\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_PWNOTE3\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15119#bo\"},{\"hasAnswerValue\":\"Intersection\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Location Type\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_GIS1\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15120#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"An Area is surrounded by 4 streets (a block). Use all 4 Street fields.\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_PWNOTE4\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15150#bo\"},{\"hasAnswerValue\":\"SW 122ND AVE\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Street 2\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_GIS3\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15151#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Street 3\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_GIS4\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15152#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Street 4\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_GIS5\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15153#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Corridor Primary Street\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_GIS6\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15154#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Does this road meet any of the following criteria?\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_DOESTHIS\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15155#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Is the Debris Vegetation or Tree?\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_Q11\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15156#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"What type of debris? (Ex: glass, rock, furniture, etc.)\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_Q1\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15157#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Do you know how it got there?\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_Q3\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15158#bo\"},{\"hasAnswerValue\":\"SW 46TH ST\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Street 1\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_GIS2\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15161#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Is it interfering with the roadway and / or sidewalk?\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_Q2\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15162#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"How much debris is there?\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_Q4\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15163#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"Public Works Contact Name (Required}:\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_CNQ10\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15164#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"This SR should be addressed in 2 business days.\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_THISSRSH\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15165#bo\"},{\"hasAnswerValue\":\"\",\"label\":\"bo\",\"hasServiceField\":{\"label\":\"You may call for an update in 2 days.\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_YOUMAYCA\"},\"iri\":\"http://www.miamidade.gov/bo/ServiceAnswer/15166#bo\"}],\"hasLegacyCode\":\"PW441\",\"hasLegacyId\":\"12-00004030\",\"label\":\"bo\",\"type\":\"PW441\",\"iri\":\"http://www.miamidade.gov/bo/PW441/15117#bo\",\"hasCreatedDate\":\"2012-01-04T10:56:00.000-05:00\",\"hasYCoordinate\":\"506615.03125\",\"hasXCoordinate\":\"856512.375\",\"hasUpdatedDate\":\"2012-01-06T05:45:09.000-05:00\",\"hasServiceActivity\":{\"hasUpdatedDate\":\"2012-01-06T05:40:06.000-05:00\",\"hasOrderBy\":\"1.0\",\"hasCompletedDate\":\"2012-01-04T00:00:00.000-05:00\",\"hasDetails\":\"Miscellaneous debris removed by Neat Crew\",\"hasLegacyId\":\"1132752116\",\"label\":\"bo\",\"iri\":\"http://www.miamidade.gov/bo/ServiceActivity/15181#bo\",\"hasOutcome\":{\"label\":\"OUTCOME_16000916\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#OUTCOME_16000916\"},\"hasActivity\":{\"label\":\"PW-Status Update\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#PW441_PWSTATUS\"},\"hasCreatedDate\":\"2012-01-06T05:40:06.000-05:00\"},\"atAddress\":{\"Zip_Code\":\"33175\",\"Street_Address_State\":{\"label\":\"Florida\",\"iri\":\"http://www.miamidade.gov/ontology#Florida\"},\"Street_Address_City\":{\"label\":\"Miami_Dade_County\",\"iri\":\"http://www.miamidade.gov/ontology#Miami_Dade_County\"},\"Street_Direction\":{\"label\":\"South_West\",\"iri\":\"http://www.miamidade.gov/ontology#South_West\"},\"Street_Name\":\"122ND\",\"Street_Number\":\"4501\",\"hasStreetType\":{\"label\":\"Street_Type_Avenue\",\"iri\":\"http://www.miamidade.gov/ontology#Street_Type_Avenue\"},\"label\":\"bo\",\"iri\":\"http://www.miamidade.gov/bo/Street_Address/15182#bo\"},\"hasStatus\":{\"description4\":\"CLOSED\",\"description6\":\"CSR\",\"label\":\"C-CLOSED\",\"comment\":\"Closed\",\"iri\":\"http://www.miamidade.gov/cirm/legacy#C-CLOSED\"}}"); //getting scalar properties System.out.println("json is object " +json.isObject()); System.out.println("json is array " + json.isArray()); System.out.println(json.at("hasLegacyId").asString()); System.out.println(json.at("hasCreatedDate").asString()); System.out.println(json.at("iri").asString()); //getting an array within the json for(Json participant : json.at("hasServiceCaseActor").asJsonList()) { System.out.println(participant.at("hasLegacyId")); System.out.println(participant.at("Name")); } } }