Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Path[] query_path(Edge query, Graph G, bool infer)
- {
- Path[] pathList = [];
- bool subExists = false;
- bool superExists = false;
- Concept subConcept = query.get_sub;
- Concept superConcept = query.get_super;
- bool isA = query.get_isA;
- subExists = contain_concept(G.conceptList, subConcept);
- superExists = contain_concept(G.conceptList, superConcept);
- {
- if(c.compare_concept(subConcept))
- subExists = true;
- if(c.compare_concept(superConcept))
- superExists = true;
- }
- if(subExists && superExists)
- {
- if(!infer)
- {
- foreach(e; G.edgeList)
- {
- if(e.get_sub.compare_concept(subConcept))
- {
- Path path = new Path(e.get_sub);
- pathList = query_rec(e.get_super, superConcept, path, pathList, true);
- }
- }
- }
- foreach(c; G.conceptList)
- {
- if(c.compare_concept(subConcept))
- {
- subConcept = c;
- break;
- }
- }
- if(infer)
- {
- Path path = new Path(subConcept);
- pathList ~= query_infer(G, subConcept, superConcept, path, true);
- }
- Path[] newPathList;
- foreach(index, p; pathList)
- {
- if(p.get_tail.get_concept.compare_concept(superConcept))
- newPathList ~= pathList[index];
- }
- pathList = newPathList;
- }
- return pathList;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement