/** * Copyright 2014, Emory University * * 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 edu.emory.clir.clearnlp.verbnet; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.junit.Ignore; import org.junit.Test; import edu.emory.clir.clearnlp.lexicon.verbnet.VNClass; import edu.emory.clir.clearnlp.lexicon.verbnet.VNFrame; import edu.emory.clir.clearnlp.lexicon.verbnet.VNLib; import edu.emory.clir.clearnlp.lexicon.verbnet.VNMap; /** * @since 3.0.0 * @author Jinho D. Choi ({@code jinho.choi@emory.edu}) */ public class VNLibTest { @Test public void testGetVerbNetMap() { VNMap map = VNLib.getVerbNetMap("src/test/resources/verbnet", true); testGetVerbNetMap1(map); testGetVerbNetMap2(map); } private void testGetVerbNetMap1(VNMap map) { VNFrame frame; VNClass vn; vn = map.get("13.6"); assertTrue(vn != null); frame = vn.getFrame(0); assertEquals("agent co-theme theme", frame.getSyntax().toString()); assertEquals("has_possession(start(E),agent,theme) not(has_possession(start(E),agent,co-theme)) has_possession(end(E),agent,co-theme) not(has_possession(end(E),agent,theme)) transfer(during(E),theme) transfer(during(E),co-theme) cause(agent,E)", frame.getSemantics().toString(" ")); frame = vn.getFrame(1); assertEquals("agent+ theme+", frame.getSyntax().toString()); assertEquals("has_possession(start(E),agent_i,theme_i) has_possession(end(E),agent_j,theme_i) has_possession(start(E),agent_j,theme_j) has_possession(end(E),agent_i,theme_j) transfer(during(E),theme_i) transfer(during(E),theme_j) cause(agent,E)", frame.getSemantics().toString(" ")); frame = vn.getFrame(2); assertEquals("agent theme+", frame.getSyntax().toString()); assertEquals("has_possession(start(E),agent,theme_i) has_possession(end(E),agent,theme_j) transfer(during(E),theme_i) transfer(during(E),theme_j) cause(agent,E)", frame.getSemantics().toString(" ")); frame = vn.getFrame(3); assertEquals("agent co-agent theme+", frame.getSyntax().toString()); assertEquals("has_possession(start(E),agent,theme_i) has_possession(end(E),co-agent,theme_i) has_possession(start(E),co-agent,theme_j) has_possession(end(E),agent,theme_j) transfer(during(E),theme_i) transfer(during(E),theme_j)", frame.getSemantics().toString(" ")); frame = vn.getFrame(4); assertEquals("agent theme", frame.getSyntax().toString()); assertEquals("transfer(during(E),theme) cause(agent,E)", frame.getSemantics().toString(" ")); vn = map.get("13.6-1"); assertTrue(vn != null); frame = vn.getFrame(0); assertEquals("co-theme location theme", frame.getSyntax().toString()); assertEquals("location(start(E),theme,location_i) location(end(E),theme,location_j) location(start(E),co-theme,location_j) location(end(E),co-theme,location_i)", frame.getSemantics().toString(" ")); frame = vn.getFrame(1); assertEquals("location theme+", frame.getSyntax().toString()); assertEquals("location(start(E),theme_i,location_i) location(end(E),theme_i,location_j) location(start(E),theme_j,location_j) location(end(E),theme_j,location_i)", frame.getSemantics().toString(" ")); vn = map.get("13.6-1-1"); assertTrue(vn != null); frame = vn.getFrame(0); assertEquals("co-theme theme", frame.getSyntax().toString()); assertEquals("transfer(during(E),theme) transfer(during(E),co-theme)", frame.getSemantics().toString(" ")); } private void testGetVerbNetMap2(VNMap map) { VNFrame frame; VNClass vn; vn = map.get("26.7-1"); assertTrue(vn != null); frame = vn.getFrame(0); assertEquals("agent theme", frame.getSyntax().toString()); assertEquals("perform(during(E),agent,theme)", frame.getSemantics().toString(" ")); frame = vn.getFrame(1); assertEquals("agent", frame.getSyntax().toString()); assertEquals("perform(during(E),agent,?theme)", frame.getSemantics().toString(" ")); frame = vn.getFrame(2); assertEquals("agent beneficiary theme", frame.getSyntax().toString()); assertEquals("perform(during(E),agent,theme) benefit(E,beneficiary)", frame.getSemantics().toString(" ")); vn = map.get("26.7-1-1"); assertTrue(vn != null); frame = vn.getFrame(0); assertEquals("agent beneficiary theme", frame.getSyntax().toString()); assertEquals("perform(during(E),agent,theme) benefit(E,beneficiary)", frame.getSemantics().toString(" ")); vn = map.get("26.7-2"); assertTrue(vn != null); frame = vn.getFrame(0); assertEquals("agent theme", frame.getSyntax().toString()); assertEquals("not(exist(start(E),theme)) exist(result(E),theme) cause(agent,E)", frame.getSemantics().toString(" ")); frame = vn.getFrame(1); assertEquals("agent", frame.getSyntax().toString()); assertEquals("not(exist(start(E),?theme)) exist(result(E),?theme) cause(agent,E)", frame.getSemantics().toString(" ")); frame = vn.getFrame(2); assertEquals("agent beneficiary theme", frame.getSyntax().toString()); assertEquals("not(exist(start(E),theme)) exist(result(E),theme) cause(agent,E) benefit(E,beneficiary)", frame.getSemantics().toString(" ")); vn = map.get("26.7-2-1"); assertTrue(vn != null); frame = vn.getFrame(0); assertEquals("agent beneficiary theme", frame.getSyntax().toString()); assertEquals("not(exist(start(E),theme)) exist(result(E),theme) cause(agent,E) benefit(E,beneficiary)", frame.getSemantics().toString(" ")); } @Test @Ignore public void printVerbNetMap() { VNMap map = VNLib.getVerbNetMap("src/test/resources/verbnet", true); List<String> ids = new ArrayList<>(map.keySet()); Collections.sort(ids); VNClass vn; for (String id : ids) { System.out.println(id); vn = map.get(id); for (VNFrame frame : vn.getFrameList()) { System.out.println(frame.getSyntax().toString()); System.out.println(frame.getSemantics().toString()); } } } }