RDF4J: проанализировать результат запроса с конечной точки и сохранить его в виде файла ntriples (некорректный запрос)

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

Добавление следующего родительского div должно центрировать желтую рамку:

<div fxFlexFill fxLayout="column" fxLayoutAlign="center center">

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

1
задан Jeen Broekstra 20 January 2019 в 04:29
поделиться

1 ответ

Когда SPARQLRepository RDF4J выполняет запрос SPARQL-запроса к этой конечной точке, конечная точка отправляет свой ответ в формате Turtle. К сожалению, этот ответ содержит синтаксическую ошибку. Происходит следующее:

  1. RDF4J выполняет запрос запроса, указывая несколько приемлемых форматов результатов (включая Turtle и N-Triples);
  2. Конечная точка выполняет запрос, выбирая Turtle как формат ответа и сериализует результат запроса в Turtle;
  3. RDF4J получает данные Turtle и анализирует их;
  4. проанализированный результат передается NTriplesWriter, который затем записывает его. [1112 ]

Однако документ результата запроса, который отправляет конечная точка, не является синтаксически допустимой Turtle, что приводит к прерыванию синтаксического анализатора Turtle RDF4J с ошибкой на этапе 3.

Проблема заключается в этой строке в ответе (строка 386):

    yago:Italian_War_of_1494–98 ,

В частности, символ между 1494 и 98. Хотя это выглядит как знак минус (-), что было бы совершенно законно, на самом деле это так называемый «черточка» (символ Unicode 0x2013). Это не юридический символ в префиксном имени в Turtle.

Модуль записи Turtle конечной точки должен правильно сериализовать значение, изменив его на полный URI вместо префиксного имени и используя escape-последовательность Unicode, например:

<http://yago-knowledge.org/resource/Italian_War_of_1494\u201398>

It возможно, стоит зарегистрировать отчет об ошибках с сопровождающими конечных точек с предложенным исправлением этого эффекта.

В качестве обходного пути вывод N-триплетов конечной точки (если вы заставляете ее отвечать N-триплетами вместо черепахи) кажется синтаксически правильным. Вы можете заставить сервер отвечать N-тройками вместо Turtle, «перезаписав» стандартный заголовок Accept, который отправляет RDF4J SPARQLRepository, например:

SPARQLRepository repo = new SPARQLRepository(endpoint);

// create a new map of additional http headers
Map<String, String> headers = new HashMap<String, String>();

// we set the Accept header to _only_ accept text/plain, forcing the endpoint
// to use N-Triples as the response format. This overwrites the standard
// Accept header that RDF4J sends.
headers.put("Accept", "text/plain");
repo.setAdditionalHttpHeaders(headers);

Как только вы это сделаете, Остальная часть вашего кода должна работать. [+1121]

0
ответ дан Jeen Broekstra 20 January 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: