Метод RDF4J для разделения литерала на значение и тип данных

Если у меня есть подключение cxn к пустому триплстору и я говорю:

val CheckSparql = "select (count(?s) as ?scount) where { ?s ?p ?o . }"

val PreparedSparql = cxn.prepareTupleQuery(QueryLanguage.SPARQL, CheckSparql)
val Result = PreparedSparql.evaluate()
val ResBindSet = Result.next()
val TripleCount = ResBindSet.getValue("scount")

println(TripleCount.toString())

я получил

"0"^^<http://www.w3.org/2001/XMLSchema#integer>

Существует ли метод RDF4J для получения только значения этого литерала?

Я просто хочу 0 или "0" без типа данных

Я решил, что должен попытаться сделать это без манипуляций со строками/регулярных выражений, если это возможно.


person Mark Miller    schedule 25.10.2017    source источник
comment
getValue возвращает экземпляр типа Value. Я думаю, вам нужно проверить тип и привести его к соответствующему типу. В вашем случае это должен быть Literal который предоставляет метод integerValue() для получения целочисленного значения. Не проверено: TripleCount.asInstanceOf[Literal].integerValue()   -  person UninformedUser    schedule 25.10.2017
comment
@AKSW да, это работает. Спасибо. это тоже работает: val tripleCountInt = tripleCount.stringValue().toInt можете ли вы придумать какую-нибудь причину, чтобы этого не делать?   -  person Mark Miller    schedule 25.10.2017
comment
Я предполагаю, что для запроса COUNT это всегда должно работать, поэтому я думаю, что ваше решение будет безопасным. В противном случае ответ @JeenBroekstra показывает другое решение. Не стесняйтесь выбирать свое любимое решение, все они работают так, как ожидалось: D   -  person UninformedUser    schedule 26.10.2017


Ответы (1)