Строковое представление типизированных литералов - PullRequest
0 голосов
/ 28 февраля 2012

Я использую Jena 2.6.4.

Следующий код

String v = "Parnell Square East";
Literal l = ModelFactory.createDefaultModel().createTypedLiteral(
    v, XSDDatatype.XSDstring);
System.out.println(l.toString());

Создает следующий вывод:

Parnell Square East ^^ http://www.w3.org/2001/XMLSchema#string

, что выглядит неправильно для меня: я бы ожидал:

"Parnell Square East" ^^ http://www.w3.org/2001/XMLSchema#string

Из быстрого взгляда на источниккод LiteralImpl.java Я вижу:

@Override public String toString() {
    return asNode().toString( PrefixMapping.Standard, false );
}

Почему второй параметр (цитирование) установлен на false?

Если я делаю

String v = "Parnell Square East";
Literal l = ModelFactory.createDefaultModel().createTypedLiteral(v,
        XSDDatatype.XSDstring);
System.out.println(l.asNode().toString(PrefixMapping.Standard, true));

Я получаю желаемый вывод

"Parnell Square East" ^^ http://www.w3.org/2001/XMLSchema#string

Мне просто интересно, почему это не поведение по умолчанию?

Спасибо, Марко

1 Ответ

1 голос
/ 29 февраля 2012

Нет гарантии, явной или неявной, что toString на любом узле Jena производит выходные данные, которые соответствуют любой конкретной сериализации (например, Turtle).Вы также можете спросить, почему toString не создает XML-узел или почему тип данных не сокращается до q-имени.Йена считает, что toString выдает достаточно информации, чтобы быть полезной при отладке.Любые требования помимо этого являются обязанностями приложения.

Так что, если у вас есть хороший вариант использования, не стесняйтесь, присылайте патч на Jena Jira .Имейте в виду, однако, что существующий пользовательский код, возможно, полагался на текущее поведение, поэтому переключение будет иметь определенную стоимость, поэтому вам нужно будет убедительно аргументировать изменения!

...