diff --git a/data/webs/philosophy/philosophy.json b/data/webs/philosophy/philosophy.json index 659cc73..5a8c1d6 100644 --- a/data/webs/philosophy/philosophy.json +++ b/data/webs/philosophy/philosophy.json @@ -3,6 +3,7 @@ "dependencies" : [ "./data/webs/philosophy/concept.json", "./data/webs/philosophy/person/person.json", - "./data/webs/philosophy/person/self.json" + "./data/webs/philosophy/person/self.json", + "./data/webs/philosophy/quality/quality.json" ] } \ No newline at end of file diff --git a/data/webs/qualia/color.json b/data/webs/philosophy/quality/color.json similarity index 93% rename from data/webs/qualia/color.json rename to data/webs/philosophy/quality/color.json index eab81f1..3eb32df 100644 --- a/data/webs/qualia/color.json +++ b/data/webs/philosophy/quality/color.json @@ -15,7 +15,7 @@ "id" : 0, "name" : "instanceOf", "parent" : 0, - "parentWeb" : "qualia", + "parentWeb" : "quality", "child" : 0 }, "1" : { diff --git a/data/webs/qualia/qualia.json b/data/webs/philosophy/quality/quality.json similarity index 50% rename from data/webs/qualia/qualia.json rename to data/webs/philosophy/quality/quality.json index ed5aab7..e77042e 100644 --- a/data/webs/qualia/qualia.json +++ b/data/webs/philosophy/quality/quality.json @@ -1,15 +1,15 @@ { - "tag" : "qualia", + "tag" : "quality", "nodes" : { "0" : { "id" : 0, - "name" : "qualia" + "name" : "quality" } }, "anchors" : { - "qualia" : 0 + "quality" : 0 }, "dependencies" : [ - "./data/webs/qualia/color.json" + "./data/webs/philosophy/quality/color.json" ] } \ No newline at end of file diff --git a/data/webs/physical-instances/characters/bert-self.json b/data/webs/physical-instances/characters/bert-self.json index e99c60b..9546a3b 100644 --- a/data/webs/physical-instances/characters/bert-self.json +++ b/data/webs/physical-instances/characters/bert-self.json @@ -22,7 +22,7 @@ "1" : { "comment" : "The color of bert's hat is blue", "id" : 1, - "name" : "qualiaOf", + "name" : "qualityOf", "parent" : 1, "parentWeb" : "color", "child" : 9 diff --git a/data/webs/root.json b/data/webs/root.json index dd13482..b80f408 100644 --- a/data/webs/root.json +++ b/data/webs/root.json @@ -18,7 +18,6 @@ }, "dependencies" : [ "./data/webs/linguistics/linguistics.json", - "./data/webs/philosophy/philosophy.json", - "./data/webs/qualia/qualia.json" + "./data/webs/philosophy/philosophy.json" ] } \ No newline at end of file diff --git a/docs/concepts_to_graph.txt b/docs/concepts_to_graph.txt index c503a3e..a62d268 100644 --- a/docs/concepts_to_graph.txt +++ b/docs/concepts_to_graph.txt @@ -3,7 +3,7 @@ A list of things to consider fleshing out in the web -Qualia +Qualities of an object diff --git a/src/main/java/org/studiorailgun/conversation/evaluators/query/Interrogative.java b/src/main/java/org/studiorailgun/conversation/evaluators/query/Interrogative.java index b3ef04c..1695f07 100644 --- a/src/main/java/org/studiorailgun/conversation/evaluators/query/Interrogative.java +++ b/src/main/java/org/studiorailgun/conversation/evaluators/query/Interrogative.java @@ -8,7 +8,7 @@ import org.studiorailgun.conversation.tracking.Quote; import org.studiorailgun.conversation.tracking.Sentence; import org.studiorailgun.knowledge.Node; import org.studiorailgun.knowledge.query.InstanceQuery; -import org.studiorailgun.knowledge.query.QualiaQuery; +import org.studiorailgun.knowledge.query.QualityQuery; import org.studiorailgun.knowledge.query.filter.PossessionQueryFilter; /** @@ -45,7 +45,7 @@ public class Interrogative { * @return null */ public static void evalWhichQuery(Conversation conversation, Quote quote, Sentence sentence, NounStack interrogative, NounStack items){ - if(QualiaQuery.isQualiaClarificationQuery(interrogative)){ + if(QualityQuery.isQualityClarificationQuery(interrogative)){ Node finalQualifier = InstanceQuery.getConcept(items.indexedWord.originalText()); if(items.possessive != null){ @@ -53,9 +53,9 @@ public class Interrogative { finalQualifier = PossessionQueryFilter.withPossessor(qualifierInstances, Globals.web.getAnchors().getSelfNode()); } - List qualiaOfInstance = QualiaQuery.getQualiaOfInstance(finalQualifier); + List qualitiesOfInstance = QualityQuery.getQualitiesOfInstance(finalQualifier); - Node qualiaType = QualiaQuery.getRequestedQualiaType(interrogative); + Node qualityType = QualityQuery.getRequestedQualityType(interrogative); conversation.getGoalData().getQueryData().getRecentQueries().add(sentence); } else { @@ -72,7 +72,7 @@ public class Interrogative { * @return null */ public static void evalWhatQuery(Conversation conversation, Quote quote, Sentence sentence, NounStack interrogative, NounStack items){ - if(QualiaQuery.isQualiaClarificationQuery(interrogative)){ + if(QualityQuery.isQualityClarificationQuery(interrogative)){ Node finalQualifier = InstanceQuery.getConcept(items.indexedWord.originalText()); if(items.possessive != null){ @@ -80,9 +80,9 @@ public class Interrogative { finalQualifier = PossessionQueryFilter.withPossessor(qualifierInstances, Globals.web.getAnchors().getSelfNode()); } - List qualiaOfInstance = QualiaQuery.getQualiaOfInstance(finalQualifier); + List qualitiesOfInstance = QualityQuery.getQualitiesOfInstance(finalQualifier); - Node qualiaType = QualiaQuery.getRequestedQualiaType(interrogative); + Node qualityType = QualityQuery.getRequestedQualityType(interrogative); conversation.getGoalData().getQueryData().getRecentQueries().add(sentence); } else { diff --git a/src/main/java/org/studiorailgun/conversation/evaluators/transfer/Interrogative.java b/src/main/java/org/studiorailgun/conversation/evaluators/transfer/Interrogative.java index 2ecde3b..233961f 100644 --- a/src/main/java/org/studiorailgun/conversation/evaluators/transfer/Interrogative.java +++ b/src/main/java/org/studiorailgun/conversation/evaluators/transfer/Interrogative.java @@ -11,7 +11,7 @@ import org.studiorailgun.conversation.tracking.Quote; import org.studiorailgun.conversation.tracking.Sentence; import org.studiorailgun.knowledge.Node; import org.studiorailgun.knowledge.query.InstanceQuery; -import org.studiorailgun.knowledge.query.QualiaQuery; +import org.studiorailgun.knowledge.query.QualityQuery; import org.studiorailgun.knowledge.query.filter.InstanceQueryFilter; import org.studiorailgun.knowledge.query.filter.PossessionQueryFilter; @@ -31,7 +31,7 @@ public class Interrogative { public static String evalWhichQuery(Conversation conversation, Quote quote, Sentence sentence, NounStack interrogative, NounStack items){ //get the thing that has the quality - if(QualiaQuery.isQualiaClarificationQuery(interrogative)){ + if(QualityQuery.isQualityClarificationQuery(interrogative)){ Node finalQualifier = InstanceQuery.getConcept(items.getIndexedWord().originalText()); if(items.getPossessive() != null){ List qualifierInstances = InstanceQuery.getInstances(finalQualifier); @@ -39,14 +39,14 @@ public class Interrogative { } //get the actual qualities that we care about - List qualiaOfInstance = QualiaQuery.getQualiaOfInstance(finalQualifier); - Node qualiaType = QualiaQuery.getRequestedQualiaType(interrogative); - List applicableQualities = InstanceQueryFilter.filter(qualiaOfInstance, qualiaType); + List qualitiesOfInstance = QualityQuery.getQualitiesOfInstance(finalQualifier); + Node qualityType = QualityQuery.getRequestedQualityType(interrogative); + List applicableQualities = InstanceQueryFilter.filter(qualitiesOfInstance, qualityType); //synthesize String subject = NounStackSynthesizer.synthesize(finalQualifier, items.getPossessive() != null); String verb = "is"; - String object = QualitySynthesizer.synthesize(applicableQualities, qualiaType); + String object = QualitySynthesizer.synthesize(applicableQualities, qualityType); return subject + " " + verb + " " + object; } else { @@ -63,7 +63,7 @@ public class Interrogative { * @return null */ public static String evalWhatQuery(Conversation conversation, Quote quote, Sentence sentence, NounStack interrogative, NounStack items){ - if(QualiaQuery.isQualiaClarificationQuery(interrogative)){ + if(QualityQuery.isQualityClarificationQuery(interrogative)){ //get the thing that has the quality Node finalQualifier = InstanceQuery.getConcept(items.getIndexedWord().originalText()); @@ -73,14 +73,14 @@ public class Interrogative { } //get the actual qualities that we care about - List qualiaOfInstance = QualiaQuery.getQualiaOfInstance(finalQualifier); - Node qualiaType = QualiaQuery.getRequestedQualiaType(interrogative); - List applicableQualities = InstanceQueryFilter.filter(qualiaOfInstance, qualiaType); + List qualitiesOfInstance = QualityQuery.getQualitiesOfInstance(finalQualifier); + Node qualityType = QualityQuery.getRequestedQualityType(interrogative); + List applicableQualities = InstanceQueryFilter.filter(qualitiesOfInstance, qualityType); //synthesize String subject = NounStackSynthesizer.synthesize(finalQualifier, items.getPossessive() != null); String verb = "is"; - String object = QualitySynthesizer.synthesize(applicableQualities, qualiaType); + String object = QualitySynthesizer.synthesize(applicableQualities, qualityType); return subject + " " + verb + " " + object; } else { diff --git a/src/main/java/org/studiorailgun/knowledge/anchor/AnchorNodes.java b/src/main/java/org/studiorailgun/knowledge/anchor/AnchorNodes.java index 8d380d1..eeb400b 100644 --- a/src/main/java/org/studiorailgun/knowledge/anchor/AnchorNodes.java +++ b/src/main/java/org/studiorailgun/knowledge/anchor/AnchorNodes.java @@ -21,9 +21,9 @@ public class AnchorNodes { Integer concept; /** - * The concept of a qualia + * The concept of a quality */ - Integer qualia; + Integer quality; /** * The concept of a name @@ -85,30 +85,30 @@ public class AnchorNodes { } /** - * Gets the idea of a qualia - * @return The idea of a qualia + * Gets the idea of a quality + * @return The idea of a quality */ - public Node getQualiaNode() { - if(qualia == null){ + public Node getQualityNode() { + if(quality == null){ return null; } - return Globals.web.getNode(qualia); + return Globals.web.getNode(quality); } /** - * Sets the qualia node - * @param id The qualia node + * Sets the quality node + * @param id The quality node */ - public void setQualia(int id){ - this.qualia = id; + public void setQuality(int id){ + this.quality = id; } /** - * Gets the id for the qualia node - * @return The id for the qualia node + * Gets the id for the quality node + * @return The id for the quality node */ - public Integer getQualia(){ - return qualia; + public Integer getQuality(){ + return quality; } /** @@ -150,8 +150,8 @@ public class AnchorNodes { if(childAnchors.getSelf() != null){ parentAnchors.setSelf(childAnchors.getSelf()); } - if(childAnchors.getQualia() != null){ - parentAnchors.setQualia(childAnchors.getQualia()); + if(childAnchors.getQuality() != null){ + parentAnchors.setQuality(childAnchors.getQuality()); } if(childAnchors.getName() != null){ parentAnchors.setName(childAnchors.getName()); @@ -180,11 +180,11 @@ public class AnchorNodes { newNodeId = crossRelationLookupMap.get(lookupId); this.setConcept(newNodeId); } - if(this.getQualia() != null){ - oldId = this.getQualia(); + if(this.getQuality() != null){ + oldId = this.getQuality(); lookupId = "node-" + tag + oldId; newNodeId = crossRelationLookupMap.get(lookupId); - this.setQualia(newNodeId); + this.setQuality(newNodeId); } if(this.getName() != null){ oldId = this.getName(); diff --git a/src/main/java/org/studiorailgun/knowledge/query/QualiaQuery.java b/src/main/java/org/studiorailgun/knowledge/query/QualityQuery.java similarity index 61% rename from src/main/java/org/studiorailgun/knowledge/query/QualiaQuery.java rename to src/main/java/org/studiorailgun/knowledge/query/QualityQuery.java index bac2717..e3dde49 100644 --- a/src/main/java/org/studiorailgun/knowledge/query/QualiaQuery.java +++ b/src/main/java/org/studiorailgun/knowledge/query/QualityQuery.java @@ -10,41 +10,41 @@ import org.studiorailgun.knowledge.query.filter.NameQueryFilter; import org.studiorailgun.knowledge.types.RelationTypes; /** - * Performs a qualia query + * Performs a quality query */ -public class QualiaQuery { +public class QualityQuery { /** - * Checks if this noun stack is querying for a qualia + * Checks if this noun stack is querying for a quality * @param interrogativeStack The interrogative noun stack - * @return true if it is a qualia query, false otherwise + * @return true if it is a quality query, false otherwise */ - public static boolean isQualiaClarificationQuery(NounStack interrogativeStack){ + public static boolean isQualityClarificationQuery(NounStack interrogativeStack){ String originalWord = interrogativeStack.getIndexedWord().originalText(); - List nodes = InstanceQuery.getInstances(Globals.web.getAnchors().getQualiaNode()); + List nodes = InstanceQuery.getInstances(Globals.web.getAnchors().getQualityNode()); Node rVal = NameQueryFilter.withNodeName(nodes, originalWord); return rVal != null; } /** - * Gets the type of qualia requested by the interrogative stack - * @param interrogativeStack The noun stack containing the qualia type - * @return The qualia type + * Gets the type of quality requested by the interrogative stack + * @param interrogativeStack The noun stack containing the quality type + * @return The quality type's node */ - public static Node getRequestedQualiaType(NounStack interrogativeStack){ + public static Node getRequestedQualityType(NounStack interrogativeStack){ String originalWord = interrogativeStack.getIndexedWord().originalText(); - List nodes = InstanceQuery.getInstances(Globals.web.getAnchors().getQualiaNode()); + List nodes = InstanceQuery.getInstances(Globals.web.getAnchors().getQualityNode()); return NameQueryFilter.withNodeName(nodes, originalWord); } /** - * Gets all the qualia of an instance + * Gets all the qualities of an instance * @param inst The instance - * @return The qualia + * @return The qualities */ - public static List getQualiaOfInstance(Node inst){ - return Globals.web.getRelationsOfChildNode(inst).stream().filter(relation -> relation.getName().equals(RelationTypes.QUALIA_OF)).map(relation -> relation.getParent()).collect(Collectors.toList()); + public static List getQualitiesOfInstance(Node inst){ + return Globals.web.getRelationsOfChildNode(inst).stream().filter(relation -> relation.getName().equals(RelationTypes.QUALITY_OF)).map(relation -> relation.getParent()).collect(Collectors.toList()); } } diff --git a/src/main/java/org/studiorailgun/knowledge/query/filter/NameQueryFilter.java b/src/main/java/org/studiorailgun/knowledge/query/filter/NameQueryFilter.java index e7a7e66..1acbff0 100644 --- a/src/main/java/org/studiorailgun/knowledge/query/filter/NameQueryFilter.java +++ b/src/main/java/org/studiorailgun/knowledge/query/filter/NameQueryFilter.java @@ -16,7 +16,16 @@ public class NameQueryFilter { public static Node withNodeName(List nodes, String name){ List filtered = nodes.stream().filter(node -> node.getName().equals(name)).collect(Collectors.toList()); if(filtered.size() != 1){ - throw new UnsupportedOperationException("TODO: handle ambiguous case"); + String message = "TODO: handle ambiguous case\n" + + "query: " + name + "\n" + + filtered.size(); + if(filtered.size() > 0){ + message = message + "found:\n"; + for(Node node : filtered){ + message = message + "\n" + node.getName(); + } + } + throw new UnsupportedOperationException(message); } return filtered.get(0); } diff --git a/src/main/java/org/studiorailgun/knowledge/types/RelationTypes.java b/src/main/java/org/studiorailgun/knowledge/types/RelationTypes.java index 3b154d6..b0c8819 100644 --- a/src/main/java/org/studiorailgun/knowledge/types/RelationTypes.java +++ b/src/main/java/org/studiorailgun/knowledge/types/RelationTypes.java @@ -17,8 +17,8 @@ public class RelationTypes { public static final String POSSESSION_OF = "possessionOf"; /** - * A qualia of instance relationship + * A quality of instance relationship */ - public static final String QUALIA_OF = "qualiaOf"; + public static final String QUALITY_OF = "qualityOf"; }