package tudelft.healthpsychology.traumaontologies.answerstate; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.junit.Before; import org.junit.Test; import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.model.OWLOntologyManager; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import tudelft.healthpsychology.traumaontologies.owltree.OwlTree; import tudelft.healthpsychology.traumaontologies.owltree.OwlTreeReasoner; import tudelft.healthpsychology.traumaontologies.questiontypes.TypedQuestion; public class AnswerStateTest { /** * End to end test, mainly to test serialization of complete states. These * states have been saved from the GUI */ private final ObjectMapper jackson = new ObjectMapper(); private OwlTree tree; @Before public void before() throws OWLOntologyCreationException, FileNotFoundException { OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = manager .loadOntologyFromOntologyDocument(new FileInputStream( new File("src/main/resources/Child Sexual Abuse.owl"))); OwlTreeReasoner reas = new OwlTreeReasoner(ontology); tree = new OwlTree(reas); } @Test public void testState1() throws JsonParseException, JsonMappingException, IOException { String statestring = "{\"ListOfAnswersState\":{\"answerStates\":[{\"PropertiesAnswerState\":{\"nodelabel\":\"Geografische_locatie\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de plaatsnaam?\",\"id\":\"Plaatsnaam\"}},\"answer\":\"Delft\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van de regio?\",\"id\":\"Naam_regio\"}},\"answer\":\"zuid holland\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de straatnaam?\",\"id\":\"Naam_straat\"}},\"answer\":\"mekelweg\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van het land?\",\"id\":\"Naam_land\"}},\"answer\":\"nederland\"}]}},{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Zwembad\",\"depth\":3,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Zwembad\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Probeer nu te beschrijven waar in het gebouw je je bevond.\",\"id\":\"Locatie_in_gebouw\"}},\"answer\":\"nat, warm\"}]}}}},{\"AnswerStateExplanationDecorator\":{\"explanation\":\"We verzamelen de relevante objecten op de locatie. We gaan een voor een door alle relevante objecten, beginnend bij het eerste object.\",\"answerstate\":{\"AnswersDepthFirstState\":{\"nodelabel\":\"Object\",\"answerstates\":[{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Object\",\"depth\":1,\"isFocused\":false,\"isFinal\":false,\"nameOfObject\":\"het\"}},\"propertiesState\":null}}],\"isFinal\":false,\"more\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante objecten?\",\"id\":\"internal\"}}}}}},{\"AnswerStateExplanationDecorator\":{\"explanation\":\"We verzamelen de relevante personen op de locatie. We verzamelen eerst de namen.\",\"answerstate\":{\"AnswersBreathFirstState\":{\"nodelabel\":\"Persoon\",\"answerstates\":[],\"mainProperty\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Geef de naam van een persoon op de locatie.\",\"id\":\"Naam\"}},\"askForMore\":false,\"morequestion\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante personen?\",\"id\":\"internal\"}}}}}}]}}"; AnswerState state = jackson.readValue(statestring, AnswerState.class); TypedQuestion opts = state.getOptions(tree); assertEquals("Beschrijf nu hoe je terug denkt aan deze locatie", opts.getQuestion()); } @Test public void testState2() throws JsonParseException, JsonMappingException, IOException { String statestring = "{\"ListOfAnswersState\":{\"answerStates\":[{\"PropertiesAnswerState\":{\"nodelabel\":\"Geografische_locatie\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van de regio?\",\"id\":\"Naam_regio\"}},\"answer\":\"zuid holland\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de plaatsnaam?\",\"id\":\"Plaatsnaam\"}},\"answer\":\"delft\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de straatnaam?\",\"id\":\"Naam_straat\"}},\"answer\":\"mekelweg\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van het land?\",\"id\":\"Naam_land\"}},\"answer\":\"nederland\"}]}},{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Voertuig_locatie\",\"depth\":3,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Voertuig_locatie\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe je terug denkt aan deze locatie\",\"id\":\"Ervaring_Locatie\"}},\"answer\":\" Wie is Kampeermeneer?Als ik even wegdroom naar mijn perfecte camping dan zie ik: Een niet al te grote camping in de natuur met geen rechttoe rechtaan plaatsen maar een beetje een georganiseerde chaos. Een veldje met gezellige mensen en met in het midden een speeltuintje waar mijn twee kinderen zich lekker kunnen uitleven. Als ik een keer geen zin heb om op twee pitjes te koken kan ik bij het campingrestaurant terecht voor een lekker hapje eten en overdag zwemmen in een meer of een beekje in de buurt. Tot nu toe komt camping De Roos in het Overijsselse Ommen misschien wel het dichtste bij dit droombeeld.\"}]}}}},{\"AnswersDepthFirstState\":{\"nodelabel\":\"Object\",\"answerstates\":[{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Rijdend_voertuig\",\"depth\":1,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Rijdend_voertuig\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe dit voorwerp eruit zag, en waarom je je deze is bijgebleven.\",\"id\":\"Beschrijving_voorwerp\"}},\"answer\":\"Meestal kampeer ik niet alleen. Vroeger ging ik met mijn ouders en twee zussen mee. Toen mijn vriendin en ik elkaar net kenden was onze eerste relatietest een paar weken backpacken door Andalusiƫ en Marokko. In de rugzak zat uiteraard een klein koepeltje en een primus. Inmiddels is ons gezin met twee kinderen uitgebreid en zijn we evenveel tenten verder. Echte tentkampeerders? Eigenlijk wel, hoewel we sinds kort het gemak en de ruimte van onze vouwwagen ook erg fijn is. De vrijheid van een kleine camperbus kan mij af en toe ook een beetje jaloers maken. Het andere deel van ons gezin lijkt af en toe juist te vallen voor de charme en het comfort van een sfeervolle glampingspot. We zullen zien welke kant we opgroeien.\"}]}}}},{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Meubel\",\"depth\":1,\"isFocused\":true,\"isFinal\":false,\"nameOfObject\":\"het\"}},\"propertiesState\":null}}],\"isFinal\":false,\"more\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante objecten?\",\"id\":\"internal\"}}}},{\"AnswerStateExplanationDecorator\":{\"answerstate\":{\"AnswersBreathFirstState\":{\"nodelabel\":\"Persoon\",\"answerstates\":[],\"mainProperty\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Geef de naam van een persoon op de locatie.\",\"id\":\"Naam\"}},\"askForMore\":false,\"morequestion\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante personen?\",\"id\":\"internal\"}}}},\"explanation\":\"We verzamelen de relevante personen op de locatie. We verzamelen eerst de namen.\"}}]}}"; AnswerState state = jackson.readValue(statestring, AnswerState.class); TypedQuestion opts = state.getOptions(tree); assertEquals( "Kan U nog specifieker aangeven: wat voor soort Meubel was het? {Bureau, Tafel, Kast, Stoel, Bed, anders}", opts.getQuestion()); } @Test public void testState3() throws JsonParseException, JsonMappingException, IOException { String statestring = "{\"ListOfAnswersState\":{\"answerStates\":[{\"PropertiesAnswerState\":{\"nodelabel\":\"Geografische_locatie\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van de regio?\",\"id\":\"Naam_regio\"}},\"answer\":\"zuid holland\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de plaatsnaam?\",\"id\":\"Plaatsnaam\"}},\"answer\":\"delft\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de straatnaam?\",\"id\":\"Naam_straat\"}},\"answer\":\"mekelweg\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van het land?\",\"id\":\"Naam_land\"}},\"answer\":\"nederland\"}]}},{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Voertuig_locatie\",\"depth\":3,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Voertuig_locatie\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe je terug denkt aan deze locatie\",\"id\":\"Ervaring_Locatie\"}},\"answer\":\" Wie is Kampeermeneer?Als ik even wegdroom naar mijn perfecte camping dan zie ik: Een niet al te grote camping in de natuur met geen rechttoe rechtaan plaatsen maar een beetje een georganiseerde chaos. Een veldje met gezellige mensen en met in het midden een speeltuintje waar mijn twee kinderen zich lekker kunnen uitleven. Als ik een keer geen zin heb om op twee pitjes te koken kan ik bij het campingrestaurant terecht voor een lekker hapje eten en overdag zwemmen in een meer of een beekje in de buurt. Tot nu toe komt camping De Roos in het Overijsselse Ommen misschien wel het dichtste bij dit droombeeld.\"}]}}}},{\"AnswersDepthFirstState\":{\"nodelabel\":\"Object\",\"answerstates\":[{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Rijdend_voertuig\",\"depth\":1,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Rijdend_voertuig\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe dit voorwerp eruit zag, en waarom je je deze is bijgebleven.\",\"id\":\"Beschrijving_voorwerp\"}},\"answer\":\"Meestal kampeer ik niet alleen. Vroeger ging ik met mijn ouders en twee zussen mee. Toen mijn vriendin en ik elkaar net kenden was onze eerste relatietest een paar weken backpacken door Andalusiƫ en Marokko. In de rugzak zat uiteraard een klein koepeltje en een primus. Inmiddels is ons gezin met twee kinderen uitgebreid en zijn we evenveel tenten verder. Echte tentkampeerders? Eigenlijk wel, hoewel we sinds kort het gemak en de ruimte van onze vouwwagen ook erg fijn is. De vrijheid van een kleine camperbus kan mij af en toe ook een beetje jaloers maken. Het andere deel van ons gezin lijkt af en toe juist te vallen voor de charme en het comfort van een sfeervolle glampingspot. We zullen zien welke kant we opgroeien.\"}]}}}},{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Tweepersoonsbed\",\"depth\":1,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Tweepersoonsbed\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Weet je nog wat voor dekbed er op het bed lag, kan je deze beschrijven?\",\"id\":\"Beschrijving_bed\"}},\"answer\":\"Lichtbruin geloof ik\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Kan je beschrijven waar in de ruimte dit meubel stond?\",\"id\":\"Locatie_meubel\"}},\"answer\":\"Aan de zijkant van de kamer tegenover de ingang\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe dit voorwerp eruit zag, en waarom je je deze is bijgebleven.\",\"id\":\"Beschrijving_voorwerp\"}},\"answer\":\"Lichtbruin hout, hout aan kopse kant, wit matras\"}]}}}}],\"isFinal\":true,\"more\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante objecten?\",\"id\":\"internal\"}}}},{\"AnswerStateExplanationDecorator\":{\"answerstate\":{\"AnswersBreathFirstState\":{\"nodelabel\":\"Persoon\",\"answerstates\":[],\"mainProperty\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Geef de naam van een persoon op de locatie.\",\"id\":\"Naam\"}},\"askForMore\":false,\"morequestion\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante personen?\",\"id\":\"internal\"}}}},\"explanation\":\"We verzamelen de relevante personen op de locatie. We verzamelen eerst de namen.\"}}]}}"; AnswerState state = jackson.readValue(statestring, AnswerState.class); TypedQuestion opts = state.getOptions(tree); assertEquals( "We verzamelen de relevante personen op de locatie. We verzamelen eerst de namen.\n" + "Geef de naam van een persoon op de locatie.", opts.getQuestion()); } @Test public void testState4() throws JsonParseException, JsonMappingException, IOException { String statestring = "{\"ListOfAnswersState\":{\"answerStates\":[{\"PropertiesAnswerState\":{\"nodelabel\":\"Geografische_locatie\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van de regio?\",\"id\":\"Naam_regio\"}},\"answer\":\"South Holland\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de plaatsnaam?\",\"id\":\"Plaatsnaam\"}},\"answer\":\"Delft\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de straatnaam?\",\"id\":\"Naam_straat\"}},\"answer\":\"Mekelweg\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van het land?\",\"id\":\"Naam_land\"}},\"answer\":\"Nederland\"}]}},{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Thuis\",\"depth\":3,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Thuis\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Probeer nu te beschrijven waar in het gebouw je je bevond.\",\"id\":\"Locatie_in_gebouw\"}},\"answer\":\"In mijn huis, op de eerste etage in mijn slaapkamer\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe je terug denkt aan deze locatie\",\"id\":\"Ervaring_Locatie\"}},\"answer\":\"Redelijk grote kamer.\"}]}}}},{\"AnswersDepthFirstState\":{\"nodelabel\":\"Object\",\"answerstates\":[{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Desktop\",\"depth\":1,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Desktop\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Waar in de ruimte bevond zich deze computer?\",\"id\":\"Locatie_in_ruimte_computer\"}},\"answer\":\"op de tafel bij de deur\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Kan je beschrijven of dit apparaat aan stond. Was iemand het aan het gebruiken? En merkte je daar nog wat van?\",\"id\":\"Apparaat_status\"}},\"answer\":\"ja ik gebruikte het\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe dit voorwerp eruit zag, en waarom je je deze is bijgebleven.\",\"id\":\"Beschrijving_voorwerp\"}},\"answer\":\"De computer was een soort schoenendoos met toetsenbord\"}]}}}}],\"isFinal\":false,\"more\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante objecten?\",\"id\":\"internal\"}}}},{\"AnswerStateExplanationDecorator\":{\"answerstate\":{\"AnswersBreathFirstState\":{\"nodelabel\":\"Persoon\",\"answerstates\":[],\"mainProperty\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Geef de naam van een persoon op de locatie.\",\"id\":\"Naam\"}},\"askForMore\":false,\"morequestion\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante personen?\",\"id\":\"internal\"}}}},\"explanation\":\"We verzamelen de relevante personen op de locatie. We verzamelen eerst de namen.\"}}]}}"; AnswerState state = jackson.readValue(statestring, AnswerState.class); TypedQuestion opts = state.getOptions(tree); assertEquals("Zijn er nog meer relevante objecten?", opts.getQuestion()); } @Test public void testState5() throws JsonParseException, JsonMappingException, IOException { String statestring = "{\"ListOfAnswersState\":{\"answerStates\":[{\"PropertiesAnswerState\":{\"nodelabel\":\"Geografische_locatie\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van de regio?\",\"id\":\"Naam_regio\"}},\"answer\":\"South Holland\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de plaatsnaam?\",\"id\":\"Plaatsnaam\"}},\"answer\":\"Delft\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de straatnaam?\",\"id\":\"Naam_straat\"}},\"answer\":\"Mekelweg\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van het land?\",\"id\":\"Naam_land\"}},\"answer\":\"Nederland\"}]}},{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Thuis\",\"depth\":3,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Thuis\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Probeer nu te beschrijven waar in het gebouw je je bevond.\",\"id\":\"Locatie_in_gebouw\"}},\"answer\":\"In mijn huis, op de eerste etage in mijn slaapkamer\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe je terug denkt aan deze locatie\",\"id\":\"Ervaring_Locatie\"}},\"answer\":\"Redelijk grote kamer.\"}]}}}},{\"AnswersDepthFirstState\":{\"nodelabel\":\"Object\",\"answerstates\":[{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Desktop\",\"depth\":1,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Desktop\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Waar in de ruimte bevond zich deze computer?\",\"id\":\"Locatie_in_ruimte_computer\"}},\"answer\":\"op de tafel bij de deur\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Kan je beschrijven of dit apparaat aan stond. Was iemand het aan het gebruiken? En merkte je daar nog wat van?\",\"id\":\"Apparaat_status\"}},\"answer\":\"ja ik gebruikte het\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe dit voorwerp eruit zag, en waarom je je deze is bijgebleven.\",\"id\":\"Beschrijving_voorwerp\"}},\"answer\":\"De computer was een soort schoenendoos met toetsenbord\"}]}}}}],\"isFinal\":true,\"more\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante objecten?\",\"id\":\"internal\"}}}},{\"AnswersBreathFirstState\":{\"nodelabel\":\"Persoon\",\"answerstates\":[{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Persoon\",\"depth\":4,\"isFocused\":false,\"isFinal\":false,\"nameOfObject\":\"Jan\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Persoon\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Geef de naam van een persoon op de locatie.\",\"id\":\"Naam\"}},\"answer\":\"Jan\"}]}}}}],\"mainProperty\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Geef de naam van een persoon op de locatie.\",\"id\":\"Naam\"}},\"askForMore\":true,\"morequestion\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante personen?\",\"id\":\"internal\"}}}}]}}"; AnswerState state = jackson.readValue(statestring, AnswerState.class); TypedQuestion opts = state.getOptions(tree); assertEquals("Zijn er nog meer relevante personen?", opts.getQuestion()); } @Test public void testState6() throws JsonParseException, JsonMappingException, IOException { String statestring = "{\"ListOfAnswersState\":{\"answerStates\":[{\"PropertiesAnswerState\":{\"nodelabel\":\"Geografische_locatie\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van de regio?\",\"id\":\"Naam_regio\"}},\"answer\":\"South Holland\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de plaatsnaam?\",\"id\":\"Plaatsnaam\"}},\"answer\":\"Delft\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de straatnaam?\",\"id\":\"Naam_straat\"}},\"answer\":\"Mekelweg\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Wat is de naam van het land?\",\"id\":\"Naam_land\"}},\"answer\":\"Nederland\"}]}},{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Thuis\",\"depth\":3,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Thuis\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Probeer nu te beschrijven waar in het gebouw je je bevond.\",\"id\":\"Locatie_in_gebouw\"}},\"answer\":\"In mijn huis, op de eerste etage in mijn slaapkamer\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe je terug denkt aan deze locatie\",\"id\":\"Ervaring_Locatie\"}},\"answer\":\"Redelijk grote kamer.\"}]}}}},{\"AnswersDepthFirstState\":{\"nodelabel\":\"Object\",\"answerstates\":[{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Desktop\",\"depth\":1,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"het\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Desktop\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Waar in de ruimte bevond zich deze computer?\",\"id\":\"Locatie_in_ruimte_computer\"}},\"answer\":\"op de tafel bij de deur\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Kan je beschrijven of dit apparaat aan stond. Was iemand het aan het gebruiken? En merkte je daar nog wat van?\",\"id\":\"Apparaat_status\"}},\"answer\":\"ja ik gebruikte het\"},{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Beschrijf nu hoe dit voorwerp eruit zag, en waarom je je deze is bijgebleven.\",\"id\":\"Beschrijving_voorwerp\"}},\"answer\":\"De computer was een soort schoenendoos met toetsenbord\"}]}}}}],\"isFinal\":true,\"more\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante objecten?\",\"id\":\"internal\"}}}},{\"AnswersBreathFirstState\":{\"nodelabel\":\"Persoon\",\"answerstates\":[{\"OntoPropAnswerState\":{\"ontologyState\":{\"OntologyAnswerState\":{\"nodelabel\":\"Geestelijke\",\"depth\":4,\"isFocused\":true,\"isFinal\":true,\"nameOfObject\":\"Jan\"}},\"propertiesState\":{\"PropertiesAnswerState\":{\"nodelabel\":\"Geestelijke\",\"answers\":[{\"prop\":{\"OwlProperty\":{\"range\":\"http://www.w3.org/2001/XMLSchema#string\",\"comment\":\"Geef de naam van een persoon op de locatie.\",\"id\":\"Naam\"}},\"answer\":\"Jan\"}]}}}}],\"mainProperty\":null,\"askForMore\":false,\"morequestion\":{\"Bool\":{\"question\":\"Zijn er nog meer relevante personen?\",\"id\":\"internal\"}}}}]}}"; AnswerState state = jackson.readValue(statestring, AnswerState.class); TypedQuestion opts = state.getOptions(tree); assertEquals("Wat is het geslacht van Jan?", opts.getQuestion()); } }