private string connectedViaAMiddleObject(string first, string second, int dist1, int dist2, bool toObject, Dictionary<string, List<string>> options)
{
Dictionary<string, List<string>> vars = new Dictionary<string, List<string>>();
vars["pred"] = new List<string>();
vars["obj"] = new List<string>();
vars["obj"].Add("?middle");
string fs = "f";
int tmpdist = dist1;
int twice = 0;
string coreQuery = "";
string oobject = first;
while (twice < 2)
{
if (tmpdist == 1)
{
coreQuery += toPattern(uri(oobject), "?p" + fs + "1", "?middle", toObject);
vars["pred"].Add("?p" + fs + "1");
}
else
{
coreQuery += toPattern(uri(oobject), "?p" + fs + "1", "?o" + fs + "1", toObject);
vars["pred"].Add("?p" + fs + "1");
for (int x = 1; x < tmpdist; x++)
{
string s = "?o" + fs + "" + x;
string p = "?p" + fs + "" + (x + 1);
vars["obj"].Add(s);
vars["pred"].Add(p);
if ((x + 1) == tmpdist)
{
coreQuery += toPattern(s, p, "?middle", toObject);
}
else
{
coreQuery += toPattern(s, p, "?o" + fs + "" + (x + 1), toObject);
}
}
}
twice++;
fs = "s";
tmpdist = dist2;
oobject = second;
}//end while
return completeQuery(coreQuery, options, vars);
}