diff --git a/src/main/java/org/studiorailgun/conversation/web/ConversationQuery.java b/src/main/java/org/studiorailgun/conversation/web/ConversationQuery.java new file mode 100644 index 0000000..657a92f --- /dev/null +++ b/src/main/java/org/studiorailgun/conversation/web/ConversationQuery.java @@ -0,0 +1,24 @@ +package org.studiorailgun.conversation.web; + +import java.util.LinkedList; +import java.util.List; + +import org.studiorailgun.Globals; +import org.studiorailgun.knowledge.Node; +import org.studiorailgun.knowledge.query.filter.NameQueryFilter; + +/** + * Queries for nodes related to conversations + */ +public class ConversationQuery { + + /** + * Gets the node for the other participant in the conversation + * @return The other participant in the conversation + */ + public static Node getOtherParticipant(){ + List nodes = new LinkedList(Globals.web.getNodes()); + return NameQueryFilter.withNodeName(nodes, "Other"); + } + +} diff --git a/src/main/java/org/studiorailgun/knowledge/types/RelationTypes.java b/src/main/java/org/studiorailgun/knowledge/types/RelationTypes.java index b0c8819..0868a64 100644 --- a/src/main/java/org/studiorailgun/knowledge/types/RelationTypes.java +++ b/src/main/java/org/studiorailgun/knowledge/types/RelationTypes.java @@ -21,4 +21,9 @@ public class RelationTypes { */ public static final String QUALITY_OF = "qualityOf"; + /** + * The name of a node in a linguistic sense + */ + public static final String NAME_OF = "nameOf"; + } diff --git a/src/main/java/org/studiorailgun/linguistics/NameQuery.java b/src/main/java/org/studiorailgun/linguistics/NameQuery.java new file mode 100644 index 0000000..94b1192 --- /dev/null +++ b/src/main/java/org/studiorailgun/linguistics/NameQuery.java @@ -0,0 +1,24 @@ +package org.studiorailgun.linguistics; + +import java.util.List; +import java.util.stream.Collectors; + +import org.studiorailgun.Globals; +import org.studiorailgun.knowledge.Node; +import org.studiorailgun.knowledge.Relation; +import org.studiorailgun.knowledge.types.RelationTypes; + +/** + * Queries related to the linguistic concept of a name + */ +public class NameQuery { + + /** + * Gets the names of a given node + */ + public static List getNames(Node node){ + List relations = Globals.web.getRelationsOfChildNode(node); + return relations.stream().filter(relation -> relation.getName().equals(RelationTypes.NAME_OF)).map(relation -> relation.getParent()).collect(Collectors.toList()); + } + +} diff --git a/src/test/java/org/studiorailgun/transfer/TransferEvaluationTests.java b/src/test/java/org/studiorailgun/transfer/TransferEvaluationTests.java new file mode 100644 index 0000000..39f4a27 --- /dev/null +++ b/src/test/java/org/studiorailgun/transfer/TransferEvaluationTests.java @@ -0,0 +1,35 @@ +package org.studiorailgun.transfer; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.List; + +import org.junit.Test; +import org.studiorailgun.Globals; +import org.studiorailgun.conversation.evaluators.transfer.TransferEval; +import org.studiorailgun.conversation.parser.NLPParser; +import org.studiorailgun.conversation.tracking.Quote; +import org.studiorailgun.conversation.web.ConversationQuery; +import org.studiorailgun.knowledge.Node; +import org.studiorailgun.linguistics.NameQuery; + +/** + * Tests for evaluating transfer statements + */ +public class TransferEvaluationTests { + + @Test + public void testEval1(){ + Globals.init("./data/webs/test/web.json"); + Quote input = new Quote("My name is John."); + NLPParser.parse(input); + + TransferEval.evaluate(Globals.conversation, input, input.getSentences().get(0)); + + //search for the name being assigned in the knowledge web + Node otherParticipant = ConversationQuery.getOtherParticipant(); + List names = NameQuery.getNames(otherParticipant); + // assertEquals(names.get(0).getName(),"John"); + } + +} diff --git a/src/test/java/org/studiorailgun/TransferParsingTests.java b/src/test/java/org/studiorailgun/transfer/TransferParsingTests.java similarity index 93% rename from src/test/java/org/studiorailgun/TransferParsingTests.java rename to src/test/java/org/studiorailgun/transfer/TransferParsingTests.java index f1fdbd8..f2fde49 100644 --- a/src/test/java/org/studiorailgun/TransferParsingTests.java +++ b/src/test/java/org/studiorailgun/transfer/TransferParsingTests.java @@ -1,8 +1,9 @@ -package org.studiorailgun; +package org.studiorailgun.transfer; import static org.junit.jupiter.api.Assertions.*; import org.junit.Test; +import org.studiorailgun.Globals; import org.studiorailgun.conversation.parser.NLPParser; import org.studiorailgun.conversation.parser.depend.Clause; import org.studiorailgun.conversation.tracking.Quote;