Я пытаюсь привести в порядок некоторый код, который у меня сейчас есть, сделать его немного более общим.В настоящее время у меня есть StringBuilder, который работает, но я хотел бы преобразовать его в объект SelectBuilder, чтобы я мог передавать различные темы и тому подобное из других функций и не нуждаться в повторной записи того же кода.
Я могу передать строку, но я надеялся использовать jena.SelectBuilder, так как она выглядит аккуратно.
Это то, над чем я сейчас работаю, в идеале я хотел бы иметь возможность передать имяи установите эту переменную, а также день рождения (возможно, я мог бы вместо этого искать birthPlace)
Версия ниже работает, в том смысле, что она возвращает ВСЕ дни рождения, но не возвращает единственный день рождения, который я хочу ', что из TonyBlair.
Я понимаю, что, возможно, вопрос не ясен - как я могу передать значение 'Tony_Blair', чтобы значение '? Name' в запросе было заменено этой строкой и вернуло мне единственный результатЯ хочу?Я планирую иметь возможность передать ЛЮБУЮ тему и / или предикат.
String name = "Tony_Blair";
SelectBuilder sbi = new SelectBuilder()
.addPrefix("dbr", "http://dbpedia.org/resource/")
.addPrefix("dbp", "http://dbpedia.org/property/")
.addPrefix("dbo", "http://dbpedia.org/ontology/")
//.addVar( "*" ) //the name?
//.addWhere( "dbr:Tony_Blair", "dbp:birthDate", "?dob" );
//.addWhere( "dbr:"+name, "dbp:birthDate", "?dob" );
.addWhere( "?name", "dbp:birthDate", "?dob" );
sbi.setVar(Var.alloc("?name"), NodeFactory.createLiteral("dbr:Tony_Blair"));
Query q = sbi.build() ;
Это старая версия
StringBuilder sb = new StringBuilder();
sb.append("PREFIX dbr: <http://dbpedia.org/resource/> \n");
sb.append("PREFIX dbp: <http://dbpedia.org/property/> \n");
sb.append("PREFIX dbo: <http://dbpedia.org/ontology/> \n");
sb.append("SELECT (STR(?dob) as ?date_of_birth) \n");
sb.append("WHERE {dbr:Tony_Blair dbp:birthDate ?dob} \n");