rename qualia -> quality

This commit is contained in:
austin 2024-12-30 15:43:42 -05:00
parent b62d5b2e66
commit 72e41f231c
12 changed files with 75 additions and 66 deletions

View File

@ -3,6 +3,7 @@
"dependencies" : [ "dependencies" : [
"./data/webs/philosophy/concept.json", "./data/webs/philosophy/concept.json",
"./data/webs/philosophy/person/person.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"
] ]
} }

View File

@ -15,7 +15,7 @@
"id" : 0, "id" : 0,
"name" : "instanceOf", "name" : "instanceOf",
"parent" : 0, "parent" : 0,
"parentWeb" : "qualia", "parentWeb" : "quality",
"child" : 0 "child" : 0
}, },
"1" : { "1" : {

View File

@ -1,15 +1,15 @@
{ {
"tag" : "qualia", "tag" : "quality",
"nodes" : { "nodes" : {
"0" : { "0" : {
"id" : 0, "id" : 0,
"name" : "qualia" "name" : "quality"
} }
}, },
"anchors" : { "anchors" : {
"qualia" : 0 "quality" : 0
}, },
"dependencies" : [ "dependencies" : [
"./data/webs/qualia/color.json" "./data/webs/philosophy/quality/color.json"
] ]
} }

View File

@ -22,7 +22,7 @@
"1" : { "1" : {
"comment" : "The color of bert's hat is blue", "comment" : "The color of bert's hat is blue",
"id" : 1, "id" : 1,
"name" : "qualiaOf", "name" : "qualityOf",
"parent" : 1, "parent" : 1,
"parentWeb" : "color", "parentWeb" : "color",
"child" : 9 "child" : 9

View File

@ -18,7 +18,6 @@
}, },
"dependencies" : [ "dependencies" : [
"./data/webs/linguistics/linguistics.json", "./data/webs/linguistics/linguistics.json",
"./data/webs/philosophy/philosophy.json", "./data/webs/philosophy/philosophy.json"
"./data/webs/qualia/qualia.json"
] ]
} }

View File

@ -3,7 +3,7 @@
A list of things to consider fleshing out in the web A list of things to consider fleshing out in the web
Qualia Qualities of an object

View File

@ -8,7 +8,7 @@ import org.studiorailgun.conversation.tracking.Quote;
import org.studiorailgun.conversation.tracking.Sentence; import org.studiorailgun.conversation.tracking.Sentence;
import org.studiorailgun.knowledge.Node; import org.studiorailgun.knowledge.Node;
import org.studiorailgun.knowledge.query.InstanceQuery; 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; import org.studiorailgun.knowledge.query.filter.PossessionQueryFilter;
/** /**
@ -45,7 +45,7 @@ public class Interrogative {
* @return null * @return null
*/ */
public static void evalWhichQuery(Conversation conversation, Quote quote, Sentence sentence, NounStack interrogative, NounStack items){ 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()); Node finalQualifier = InstanceQuery.getConcept(items.indexedWord.originalText());
if(items.possessive != null){ if(items.possessive != null){
@ -53,9 +53,9 @@ public class Interrogative {
finalQualifier = PossessionQueryFilter.withPossessor(qualifierInstances, Globals.web.getAnchors().getSelfNode()); finalQualifier = PossessionQueryFilter.withPossessor(qualifierInstances, Globals.web.getAnchors().getSelfNode());
} }
List<Node> qualiaOfInstance = QualiaQuery.getQualiaOfInstance(finalQualifier); List<Node> qualitiesOfInstance = QualityQuery.getQualitiesOfInstance(finalQualifier);
Node qualiaType = QualiaQuery.getRequestedQualiaType(interrogative); Node qualityType = QualityQuery.getRequestedQualityType(interrogative);
conversation.getGoalData().getQueryData().getRecentQueries().add(sentence); conversation.getGoalData().getQueryData().getRecentQueries().add(sentence);
} else { } else {
@ -72,7 +72,7 @@ public class Interrogative {
* @return null * @return null
*/ */
public static void evalWhatQuery(Conversation conversation, Quote quote, Sentence sentence, NounStack interrogative, NounStack items){ 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()); Node finalQualifier = InstanceQuery.getConcept(items.indexedWord.originalText());
if(items.possessive != null){ if(items.possessive != null){
@ -80,9 +80,9 @@ public class Interrogative {
finalQualifier = PossessionQueryFilter.withPossessor(qualifierInstances, Globals.web.getAnchors().getSelfNode()); finalQualifier = PossessionQueryFilter.withPossessor(qualifierInstances, Globals.web.getAnchors().getSelfNode());
} }
List<Node> qualiaOfInstance = QualiaQuery.getQualiaOfInstance(finalQualifier); List<Node> qualitiesOfInstance = QualityQuery.getQualitiesOfInstance(finalQualifier);
Node qualiaType = QualiaQuery.getRequestedQualiaType(interrogative); Node qualityType = QualityQuery.getRequestedQualityType(interrogative);
conversation.getGoalData().getQueryData().getRecentQueries().add(sentence); conversation.getGoalData().getQueryData().getRecentQueries().add(sentence);
} else { } else {

View File

@ -11,7 +11,7 @@ import org.studiorailgun.conversation.tracking.Quote;
import org.studiorailgun.conversation.tracking.Sentence; import org.studiorailgun.conversation.tracking.Sentence;
import org.studiorailgun.knowledge.Node; import org.studiorailgun.knowledge.Node;
import org.studiorailgun.knowledge.query.InstanceQuery; 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.InstanceQueryFilter;
import org.studiorailgun.knowledge.query.filter.PossessionQueryFilter; 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){ public static String evalWhichQuery(Conversation conversation, Quote quote, Sentence sentence, NounStack interrogative, NounStack items){
//get the thing that has the quality //get the thing that has the quality
if(QualiaQuery.isQualiaClarificationQuery(interrogative)){ if(QualityQuery.isQualityClarificationQuery(interrogative)){
Node finalQualifier = InstanceQuery.getConcept(items.getIndexedWord().originalText()); Node finalQualifier = InstanceQuery.getConcept(items.getIndexedWord().originalText());
if(items.getPossessive() != null){ if(items.getPossessive() != null){
List<Node> qualifierInstances = InstanceQuery.getInstances(finalQualifier); List<Node> qualifierInstances = InstanceQuery.getInstances(finalQualifier);
@ -39,14 +39,14 @@ public class Interrogative {
} }
//get the actual qualities that we care about //get the actual qualities that we care about
List<Node> qualiaOfInstance = QualiaQuery.getQualiaOfInstance(finalQualifier); List<Node> qualitiesOfInstance = QualityQuery.getQualitiesOfInstance(finalQualifier);
Node qualiaType = QualiaQuery.getRequestedQualiaType(interrogative); Node qualityType = QualityQuery.getRequestedQualityType(interrogative);
List<Node> applicableQualities = InstanceQueryFilter.filter(qualiaOfInstance, qualiaType); List<Node> applicableQualities = InstanceQueryFilter.filter(qualitiesOfInstance, qualityType);
//synthesize //synthesize
String subject = NounStackSynthesizer.synthesize(finalQualifier, items.getPossessive() != null); String subject = NounStackSynthesizer.synthesize(finalQualifier, items.getPossessive() != null);
String verb = "is"; String verb = "is";
String object = QualitySynthesizer.synthesize(applicableQualities, qualiaType); String object = QualitySynthesizer.synthesize(applicableQualities, qualityType);
return subject + " " + verb + " " + object; return subject + " " + verb + " " + object;
} else { } else {
@ -63,7 +63,7 @@ public class Interrogative {
* @return null * @return null
*/ */
public static String evalWhatQuery(Conversation conversation, Quote quote, Sentence sentence, NounStack interrogative, NounStack items){ 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 //get the thing that has the quality
Node finalQualifier = InstanceQuery.getConcept(items.getIndexedWord().originalText()); Node finalQualifier = InstanceQuery.getConcept(items.getIndexedWord().originalText());
@ -73,14 +73,14 @@ public class Interrogative {
} }
//get the actual qualities that we care about //get the actual qualities that we care about
List<Node> qualiaOfInstance = QualiaQuery.getQualiaOfInstance(finalQualifier); List<Node> qualitiesOfInstance = QualityQuery.getQualitiesOfInstance(finalQualifier);
Node qualiaType = QualiaQuery.getRequestedQualiaType(interrogative); Node qualityType = QualityQuery.getRequestedQualityType(interrogative);
List<Node> applicableQualities = InstanceQueryFilter.filter(qualiaOfInstance, qualiaType); List<Node> applicableQualities = InstanceQueryFilter.filter(qualitiesOfInstance, qualityType);
//synthesize //synthesize
String subject = NounStackSynthesizer.synthesize(finalQualifier, items.getPossessive() != null); String subject = NounStackSynthesizer.synthesize(finalQualifier, items.getPossessive() != null);
String verb = "is"; String verb = "is";
String object = QualitySynthesizer.synthesize(applicableQualities, qualiaType); String object = QualitySynthesizer.synthesize(applicableQualities, qualityType);
return subject + " " + verb + " " + object; return subject + " " + verb + " " + object;
} else { } else {

View File

@ -21,9 +21,9 @@ public class AnchorNodes {
Integer concept; Integer concept;
/** /**
* The concept of a qualia * The concept of a quality
*/ */
Integer qualia; Integer quality;
/** /**
* The concept of a name * The concept of a name
@ -85,30 +85,30 @@ public class AnchorNodes {
} }
/** /**
* Gets the idea of a qualia * Gets the idea of a quality
* @return The idea of a qualia * @return The idea of a quality
*/ */
public Node getQualiaNode() { public Node getQualityNode() {
if(qualia == null){ if(quality == null){
return null; return null;
} }
return Globals.web.getNode(qualia); return Globals.web.getNode(quality);
} }
/** /**
* Sets the qualia node * Sets the quality node
* @param id The qualia node * @param id The quality node
*/ */
public void setQualia(int id){ public void setQuality(int id){
this.qualia = id; this.quality = id;
} }
/** /**
* Gets the id for the qualia node * Gets the id for the quality node
* @return The id for the qualia node * @return The id for the quality node
*/ */
public Integer getQualia(){ public Integer getQuality(){
return qualia; return quality;
} }
/** /**
@ -150,8 +150,8 @@ public class AnchorNodes {
if(childAnchors.getSelf() != null){ if(childAnchors.getSelf() != null){
parentAnchors.setSelf(childAnchors.getSelf()); parentAnchors.setSelf(childAnchors.getSelf());
} }
if(childAnchors.getQualia() != null){ if(childAnchors.getQuality() != null){
parentAnchors.setQualia(childAnchors.getQualia()); parentAnchors.setQuality(childAnchors.getQuality());
} }
if(childAnchors.getName() != null){ if(childAnchors.getName() != null){
parentAnchors.setName(childAnchors.getName()); parentAnchors.setName(childAnchors.getName());
@ -180,11 +180,11 @@ public class AnchorNodes {
newNodeId = crossRelationLookupMap.get(lookupId); newNodeId = crossRelationLookupMap.get(lookupId);
this.setConcept(newNodeId); this.setConcept(newNodeId);
} }
if(this.getQualia() != null){ if(this.getQuality() != null){
oldId = this.getQualia(); oldId = this.getQuality();
lookupId = "node-" + tag + oldId; lookupId = "node-" + tag + oldId;
newNodeId = crossRelationLookupMap.get(lookupId); newNodeId = crossRelationLookupMap.get(lookupId);
this.setQualia(newNodeId); this.setQuality(newNodeId);
} }
if(this.getName() != null){ if(this.getName() != null){
oldId = this.getName(); oldId = this.getName();

View File

@ -10,41 +10,41 @@ import org.studiorailgun.knowledge.query.filter.NameQueryFilter;
import org.studiorailgun.knowledge.types.RelationTypes; 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 * @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(); String originalWord = interrogativeStack.getIndexedWord().originalText();
List<Node> nodes = InstanceQuery.getInstances(Globals.web.getAnchors().getQualiaNode()); List<Node> nodes = InstanceQuery.getInstances(Globals.web.getAnchors().getQualityNode());
Node rVal = NameQueryFilter.withNodeName(nodes, originalWord); Node rVal = NameQueryFilter.withNodeName(nodes, originalWord);
return rVal != null; return rVal != null;
} }
/** /**
* Gets the type of qualia requested by the interrogative stack * Gets the type of quality requested by the interrogative stack
* @param interrogativeStack The noun stack containing the qualia type * @param interrogativeStack The noun stack containing the quality type
* @return The qualia type * @return The quality type's node
*/ */
public static Node getRequestedQualiaType(NounStack interrogativeStack){ public static Node getRequestedQualityType(NounStack interrogativeStack){
String originalWord = interrogativeStack.getIndexedWord().originalText(); String originalWord = interrogativeStack.getIndexedWord().originalText();
List<Node> nodes = InstanceQuery.getInstances(Globals.web.getAnchors().getQualiaNode()); List<Node> nodes = InstanceQuery.getInstances(Globals.web.getAnchors().getQualityNode());
return NameQueryFilter.withNodeName(nodes, originalWord); return NameQueryFilter.withNodeName(nodes, originalWord);
} }
/** /**
* Gets all the qualia of an instance * Gets all the qualities of an instance
* @param inst The instance * @param inst The instance
* @return The qualia * @return The qualities
*/ */
public static List<Node> getQualiaOfInstance(Node inst){ public static List<Node> getQualitiesOfInstance(Node inst){
return Globals.web.getRelationsOfChildNode(inst).stream().filter(relation -> relation.getName().equals(RelationTypes.QUALIA_OF)).map(relation -> relation.getParent()).collect(Collectors.toList()); return Globals.web.getRelationsOfChildNode(inst).stream().filter(relation -> relation.getName().equals(RelationTypes.QUALITY_OF)).map(relation -> relation.getParent()).collect(Collectors.toList());
} }
} }

View File

@ -16,7 +16,16 @@ public class NameQueryFilter {
public static Node withNodeName(List<Node> nodes, String name){ public static Node withNodeName(List<Node> nodes, String name){
List<Node> filtered = nodes.stream().filter(node -> node.getName().equals(name)).collect(Collectors.toList()); List<Node> filtered = nodes.stream().filter(node -> node.getName().equals(name)).collect(Collectors.toList());
if(filtered.size() != 1){ 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); return filtered.get(0);
} }

View File

@ -17,8 +17,8 @@ public class RelationTypes {
public static final String POSSESSION_OF = "possessionOf"; 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";
} }