2017-02-07 6 views
0

다음은 Model (Apache Jena에서)을 읽는 함수입니다. 내가 JDK 8 예나 3.1.0 버전을 사용 할 때 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) } 

모든게 괜찮 았는데.
하지만 나중에 jdk 7을 지원하기 위해 Jena 버전을 2.13.0으로 변경하고 모든 것이 최악입니다.
이것은 java.lang.Exception을 던지고 있습니다 : com.hp.hpl.jena.shared.NoReaderForLangException : 27 번 라인에서 발생하는 application/ld + json 오류.

Jena 2.13.0이 application/ld + json 언어를 지원하지 않는다고 생각합니다.
"JSONLD"위의 코드에서 mimeType 인 model.read()의 세 번째 매개 변수를 설정하면 발견됩니다.하지만 Jena에서 잘 작동하는 동안 application/ld + json이 작동하지 않는 이유는 여전히 있습니다. 3.1.0?이 기능은 이후 릴리스에서만 지원됩니까?

답변

0

model.read은 MIME 유형이 아닌 언어 이름이며 Jena 2.13.0에서는 MIME 유형을 사용하지 않았습니다. RDFParserRegistry에서 MIME 유형을 조회하거나 RDFDataMgr으로 읽을 수 있습니다.