1 | package tudelft.healthpsychology.traumaontologies.owltree;
|
---|
2 |
|
---|
3 | import static org.junit.Assert.assertEquals;
|
---|
4 | import static org.junit.Assert.assertNotNull;
|
---|
5 | import static org.junit.Assert.assertNull;
|
---|
6 | import static org.junit.Assert.assertTrue;
|
---|
7 |
|
---|
8 | import java.io.File;
|
---|
9 | import java.util.Arrays;
|
---|
10 | import java.util.Collection;
|
---|
11 | import java.util.Collections;
|
---|
12 | import java.util.HashMap;
|
---|
13 | import java.util.List;
|
---|
14 | import java.util.Map;
|
---|
15 | import java.util.Set;
|
---|
16 | import java.util.stream.Collectors;
|
---|
17 |
|
---|
18 | import org.junit.Before;
|
---|
19 | import org.junit.Test;
|
---|
20 | import org.semanticweb.owlapi.apibinding.OWLManager;
|
---|
21 | import org.semanticweb.owlapi.model.OWLOntology;
|
---|
22 | import org.semanticweb.owlapi.model.OWLOntologyCreationException;
|
---|
23 | import org.semanticweb.owlapi.model.OWLOntologyManager;
|
---|
24 |
|
---|
25 | import tudelft.healthpsychology.traumaontologies.answerstate.Property;
|
---|
26 | import tudelft.healthpsychology.traumaontologies.questiontypes.TypedQuestion;
|
---|
27 | import tudelft.utilities.junit.GeneralTests;
|
---|
28 | import tudelft.utilities.tree.TreeNode;
|
---|
29 |
|
---|
30 | public class OwlOntologyNodeTest extends GeneralTests<OwlOntologyNode> {
|
---|
31 | private static final String MEUBEL = "Meubel";
|
---|
32 | private static final File ONTO_FILE = new File(
|
---|
33 | "src/main/resources/Child Sexual Abuse.owl");
|
---|
34 | private OWLOntology ontology;
|
---|
35 | private OwlTreeReasoner reasoner;
|
---|
36 | private OwlOntologyNode node1, node1a, node2, node3;
|
---|
37 |
|
---|
38 | @Before
|
---|
39 | public void before() throws OWLOntologyCreationException {
|
---|
40 | OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
|
---|
41 | ontology = manager.loadOntologyFromOntologyDocument(ONTO_FILE);
|
---|
42 | reasoner = new OwlTreeReasoner(ontology);
|
---|
43 |
|
---|
44 | node1 = new OwlOntologyNode(reasoner.getObject("Bed"), reasoner);
|
---|
45 | node1a = new OwlOntologyNode(reasoner.getObject("Bed"), reasoner);
|
---|
46 | node2 = new OwlOntologyNode(reasoner.getObject("Kast"), reasoner);
|
---|
47 | node3 = new OwlOntologyNode(reasoner.getObject("Meubel"), reasoner);
|
---|
48 |
|
---|
49 | }
|
---|
50 |
|
---|
51 | @Override
|
---|
52 | public List<List<OwlOntologyNode>> getGeneralTestData() {
|
---|
53 | return Arrays.asList(Arrays.asList(node1, node1a), Arrays.asList(node2),
|
---|
54 | Arrays.asList(node3));
|
---|
55 | }
|
---|
56 |
|
---|
57 | @Override
|
---|
58 | public List<String> getGeneralTestStrings() {
|
---|
59 | return Arrays.asList("Node\\[\\<.*.owl#Bed\\>\\]",
|
---|
60 | "Node\\[\\<.*.owl#Kast\\>\\]", "Node\\[\\<.*.owl#Meubel\\>\\]");
|
---|
61 | }
|
---|
62 |
|
---|
63 | @Test
|
---|
64 | public void smokeTest() {
|
---|
65 | new OwlOntologyNode(reasoner.getObject("Bed"), reasoner);
|
---|
66 | }
|
---|
67 |
|
---|
68 | @Test
|
---|
69 | public void smokeTest1() throws OWLOntologyCreationException {
|
---|
70 | OwlOntologyNode.fromFile("Object", ONTO_FILE);
|
---|
71 | }
|
---|
72 |
|
---|
73 | @Test
|
---|
74 | public void getAttrTest() {
|
---|
75 | OwlOntologyNode node = new OwlOntologyNode(reasoner.getObject("Bed"),
|
---|
76 | reasoner);
|
---|
77 | List<Property> attris = node.getAttribute();
|
---|
78 | assertEquals(3, attris.size());
|
---|
79 | System.out.println(attris);
|
---|
80 |
|
---|
81 | }
|
---|
82 |
|
---|
83 | @Test
|
---|
84 | public void getMeubelQuestionsTest() {
|
---|
85 |
|
---|
86 | OwlOntologyNode node = new OwlOntologyNode(reasoner.getObject("Meubel"),
|
---|
87 | reasoner);
|
---|
88 | List<Property> attris = node.getAttribute();
|
---|
89 | System.out.println(attris);
|
---|
90 | assertEquals(2, attris.size()); // Beschrijving_voorwerp and
|
---|
91 | // Locatie_meubel
|
---|
92 |
|
---|
93 | Set<String> questions = attris.stream()
|
---|
94 | .map(attri -> attri.getQuestionType().getQuestion())
|
---|
95 | .collect(Collectors.toSet());
|
---|
96 |
|
---|
97 | System.out.println(questions);
|
---|
98 | assertTrue(questions.contains(
|
---|
99 | "Kan je beschrijven waar in de ruimte dit meubel stond?"));
|
---|
100 | assertTrue(questions.contains(
|
---|
101 | "Beschrijf nu hoe dit voorwerp eruit zag, en waarom je je deze is bijgebleven."));
|
---|
102 | }
|
---|
103 |
|
---|
104 | @Test
|
---|
105 | public void getPersoonAttrTest() {
|
---|
106 | OwlOntologyNode node = new OwlOntologyNode(
|
---|
107 | reasoner.getObject("Persoon"), reasoner);
|
---|
108 | List<Property> attris = node.getAttribute();
|
---|
109 | assertEquals(2, attris.size());
|
---|
110 |
|
---|
111 | Set<String> questions = attris.stream()
|
---|
112 | .map(attri -> attri.getQuestionType().getQuestion())
|
---|
113 | .collect(Collectors.toSet());
|
---|
114 | assertTrue(questions.contains("Wat is het geslacht van [Naam]?"));
|
---|
115 | assertTrue(questions
|
---|
116 | .contains("Geef de naam van een persoon op de locatie."));
|
---|
117 |
|
---|
118 | }
|
---|
119 |
|
---|
120 | @Test(expected = IllegalArgumentException.class)
|
---|
121 | public void getNonexistingTest() {
|
---|
122 | new OwlOntologyNode(reasoner.getObject("Nonsense"), reasoner);
|
---|
123 |
|
---|
124 | }
|
---|
125 |
|
---|
126 | @Test
|
---|
127 | public void getChildTest() {
|
---|
128 | OwlOntologyNode node = new OwlOntologyNode(reasoner.getObject(MEUBEL),
|
---|
129 | reasoner);
|
---|
130 | OwlOntologyNode child = node.getChild("Bed");
|
---|
131 | assertNotNull(child);
|
---|
132 | }
|
---|
133 |
|
---|
134 | @Test
|
---|
135 | public void getNonsenseChildTest() {
|
---|
136 | OwlOntologyNode node = new OwlOntologyNode(reasoner.getObject(MEUBEL),
|
---|
137 | reasoner);
|
---|
138 | OwlOntologyNode child = node.getChild("Nonsense");
|
---|
139 | assertNull(child);
|
---|
140 | }
|
---|
141 |
|
---|
142 | @Test
|
---|
143 | public void getLabelTest() {
|
---|
144 | OwlOntologyNode node = new OwlOntologyNode(reasoner.getObject(MEUBEL),
|
---|
145 | reasoner);
|
---|
146 | assertEquals(MEUBEL, node.getLabel());
|
---|
147 | }
|
---|
148 |
|
---|
149 | @Test
|
---|
150 | public void getChildrenTest() {
|
---|
151 | OwlOntologyNode node = new OwlOntologyNode(reasoner.getObject(MEUBEL),
|
---|
152 | reasoner);
|
---|
153 | List<? extends TreeNode<String, Collection<Property>>> childs = node
|
---|
154 | .getChildren();
|
---|
155 | System.out.println(childs);
|
---|
156 | assertTrue("Meubel does not have the expected children",
|
---|
157 | childs.toString().matches(
|
---|
158 | ".*Node.*Bureau.*Node.*Tafel.*Node.*Kast.*Node.*Stoel.*Node.*Bed.*"));
|
---|
159 |
|
---|
160 | }
|
---|
161 |
|
---|
162 | @Test
|
---|
163 | public void getChildrenDepth1Test() {
|
---|
164 | OwlOntologyNode node = new OwlOntologyNode(
|
---|
165 | reasoner.getObject("Persoon"), reasoner);
|
---|
166 | List<? extends TreeNode<String, Collection<Property>>> childs = node
|
---|
167 | .getChildren(1);
|
---|
168 | System.out.println(childs);
|
---|
169 | assertEquals(2, childs.size());
|
---|
170 | assertTrue("Familie does not have the expected children",
|
---|
171 | childs.toString().matches(".*Node.*Jijzelf.*Node.*Anderen.*"));
|
---|
172 |
|
---|
173 | }
|
---|
174 |
|
---|
175 | @Test
|
---|
176 | public void getChildrenDepth2Test() {
|
---|
177 | OwlOntologyNode node = new OwlOntologyNode(
|
---|
178 | reasoner.getObject("Persoon"), reasoner);
|
---|
179 | List<? extends TreeNode<String, Collection<Property>>> childs = node
|
---|
180 | .getChildren(2);
|
---|
181 | System.out.println(childs);
|
---|
182 | assertEquals(6, childs.size());
|
---|
183 | assertTrue("Familie does not have the expected children",
|
---|
184 | childs.toString().matches(
|
---|
185 | ".*Node.*Jijzelf.*Node.*Leraar.*Node.*Collega.*Node.*Vriend.*Node.*Geestelijke.*"));
|
---|
186 |
|
---|
187 | }
|
---|
188 |
|
---|
189 | @Test
|
---|
190 | public void getParentTest() {
|
---|
191 | OwlOntologyNode node = new OwlOntologyNode(
|
---|
192 | reasoner.getObject("Anderen"), reasoner);
|
---|
193 | assertEquals(
|
---|
194 | new OwlOntologyNode(reasoner.getObject("Persoon"), reasoner),
|
---|
195 | node.getParent());
|
---|
196 | }
|
---|
197 |
|
---|
198 | @Test
|
---|
199 | public void getParentOfRootTest() {
|
---|
200 | OwlOntologyNode node = new OwlOntologyNode(
|
---|
201 | reasoner.getObject("Type_Locatie"), reasoner);
|
---|
202 | assertEquals(null, node.getParent());
|
---|
203 | }
|
---|
204 |
|
---|
205 | @Test
|
---|
206 | public void ParkStateE2Etest() throws OWLOntologyCreationException {
|
---|
207 | OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
|
---|
208 | OWLOntology ontology = manager.loadOntologyFromOntologyDocument(
|
---|
209 | new File("src/main/resources/Child Sexual Abuse.owl"));
|
---|
210 | OwlTreeReasoner reas = new OwlTreeReasoner(ontology);
|
---|
211 | OwlOntologyNode park = new OwlOntologyNode("Park", reas);
|
---|
212 |
|
---|
213 | assertEquals(Collections.EMPTY_LIST, park.getChildren());
|
---|
214 |
|
---|
215 | }
|
---|
216 |
|
---|
217 | @Test
|
---|
218 | public void getCollegaProperties() {
|
---|
219 | OwlOntologyNode node = new OwlOntologyNode(
|
---|
220 | reasoner.getObject("Collega"), reasoner);
|
---|
221 | List<Property> attris = node.getAttribute();
|
---|
222 | System.out.println(attris);
|
---|
223 | assertEquals(4, attris.size()); // Beschrijving_voorwerp and
|
---|
224 | // Locatie_meubel
|
---|
225 |
|
---|
226 | Property relatieCollega = attris.stream()
|
---|
227 | .filter(prop -> "Relatie_met_jou_collega"
|
---|
228 | .equals(prop.getQuestionType().getId()))
|
---|
229 | .findFirst().get();
|
---|
230 | System.out.println(relatieCollega.getQuestionType().getQuestion());
|
---|
231 |
|
---|
232 | Map<String, String> naamIsPiet = new HashMap<>();
|
---|
233 | naamIsPiet.put("\\[Naam\\]", "Piet");
|
---|
234 | TypedQuestion substiRelatie = relatieCollega.getQuestionType()
|
---|
235 | .substitute(naamIsPiet);
|
---|
236 | System.out.println(substiRelatie.getQuestion());
|
---|
237 | assertEquals(
|
---|
238 | "Beschrijf nu jou relatie tot Piet. Bij welke baan hebben jullie elkaar leren kennen, en hoe was de relatie tussen jullie?",
|
---|
239 | substiRelatie.getQuestion());
|
---|
240 | }
|
---|
241 |
|
---|
242 | } |
---|