2017-02-07 3 views
0

Вот моя функция, чтобы прочитать Model (In Apache Jena) от HTTPResponse данные телаmodel.read (inputStream, baseIRI, mimeType) throws java.lang.Exception: com.hp.hpl.jena.shared.NoReaderForLangException: application/ld + json

1)public static Model accessModelFromResponse(HttpResponse response) throws Exception { 

2)  Header contentType = response.getFirstHeader("Content-Type"); 
3)  String mimeType = contentType.getValue(); 


4)  String data = ""; 
5)  if(mimeType.equals("application/ld+json")) 
6)  { 
7)   BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 
8)   String json; 
9)   while ((json = reader.readLine()) != null) { 
10)    data += json; 
11)   } 
12)  } 
13)  else if(mimeType.equals("application/json")) 
14)  { 
15)   data = (String) Services.addContextToJson(response); 
16)   mimeType = "application/ld+json"; 
17)  } 
18)  else 
19)  { 
20)   throw new Exception("Data is not json/jsonld type"); 
21)  } 
22)  InputStream in = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8)); 

23)  Model model = ModelFactory.createDefaultModel(); 
24)  try { 
25)   model.read(in, "http://myweb.com/", mimeType); 
26)  } catch (Exception ex) { 
27)   throw ex; 
28)  } 
29)  return model; 
30) } 

Everthing работал хорошо, когда я использовал Jena 3.1.0 версии JDK 8.
Но позже для поддержки jdk 7 меняю версию Jena на 2.13.0, и все стало хуже.
Это метать java.lang.Exception: com.hp.hpl.jena.shared.NoReaderForLangException: ошибка приложения/ld + json, которая возникает из строки 27.

Я думаю, что Jena 2.13.0 не поддерживает приложение/ld + json Язык.
Я нашел, если я установил третий параметр model.read(), который является mimeType в приведенном выше коде, чтобы «JSONLD» работал нормально. Но все же у меня вопрос, почему application/ld + json не работает, пока он отлично работает в Jena 3.1.0? Поддерживается ли это только в последующих выпусках?

ответ

0

model.read берет имя языка, а не тип MIME и в Jena 2.13.0 с использованием типа mime. Возможно, вы сможете найти тип MIME в RDFParserRegistry и/или прочитать с помощью RDFDataMgr.

Смежные вопросы