!7 sS knowledge = [[ CirclesAndLines(circles=[Circle(text="A snippet", traits=[], x=d("0.33"), y=d("0.44")), Circle(text="a type", traits=[], x=d("0.7"), y=d("0.43"))], lines=[Arrow(a=t5, b=t31, text="has", traits=[])], title="A snippet") CirclesAndLines(circles=[Circle(text="A snippet", traits=[], x=d("0.32"), y=d("0.3")), Circle(text="55", traits=[], x=d("0.67"), y=d("0.31")), Circle(text="a program", traits=[], x=d("0.52"), y=d("0.59"))], lines=[Arrow(a=t5, b=t31, text="with type", traits=[]), Arrow(a=t5, b=t57, text="Then: is", traits=[])], title="Snippet type 55, clarified") ]]; p { L knol = websFromCALStructures(knowledge); Web web = webFromTriples(#1010443, "is a", "snippet"); web_isA_expandForward(web); web_addWebToWeb(first(knol), web); web_mergeNodesByFirstLabelIC(web); web_rename(web, "a type", "type ?"); web_collapseBackwards_keep(web, "is"); for (WebRelation rel : web_findRelations(web, "*", "has", "type ?")) if (isSnippetID(web_text(rel.a))) web_setText(rel.b, "type " + getSnippetType(web_text(rel.a))); web_contractRelation(web, "has", "type"); web_is_addToSource(web); Clusters clusters = new HashMap; treeSetClusters_add(clusters, "has type", "with type"); web_clusterClean(web, clusters); Web patternWeb = web_clusterClean(second(knol), clusters); web_ifThen2(web, patternWeb); showTabbedWebs("Pattern", patternWeb, "Input", web); }