Model을 JSON-LD로 직렬화하고 RDF4J를 사용하여 문자열 변수에 저장하려고합니다.RDF4J/Sesame의 들여 쓰기, 공백 또는 줄 바꿈없이 JSON-LD 직렬화 문자열
내 코드는 다음과 같습니다
public void storeAsString(Model model) {
StringWriter stringWriter = new StringWriter();
RDFWriter rdfWriter = Rio.createWriter(RDFFormat.JSONLD, stringWriter);
rdfWriter.getWriterConfig().set(JSONLDSettings.JSONLD_MODE, JSONLDMode.COMPACT);
rdfWriter.getWriterConfig().set(JSONLDSettings.OPTIMIZE, true);
Rio.write(model, rdfWriter);
String output = stringWriter.toString();
}
그것은 나에게 JSON-LD 문자열을 제공하지만, 들여 쓰기, 공백이나 System.out.println(output)
은 사람이 읽을되지 않도록 줄 바꿈없이. 그것은 다음과 같습니다 아파치 예나에서
{"@context":"http://schema.org/","type":"Person","jobTitle":"Professor","name":"Jane Doe","telephone":"(425) 123-4567","url":"http://www.janedoe.com"}
이 나에게 원하는 출력 형식을 줄 것이다 JSONLD_PRETTY
를라는 RDFFormat
있다. 다음과 유사합니다 :
{
"@context": "http://schema.org/",
"@graph": [
{
"id": "_:b0",
"type": "Person",
"jobTitle": "Professor",
"name": "Jane Doe",
"telephone": "(425) 123-4567",
"url": "http://www.janedoe.com"
}
]
}
Eclipse RDF4J에서도 가능합니까?
미리 감사드립니다.
편집 : 내가이 오류가 발생합니다 MongoDB를 사용하여 JSON-LD 문자열을 저장하기 위해 노력하고 있어요 : Invalid BSON field name
을. 이것이 직렬화 또는 내장 모델에 문제가 있습니까?
편집 번호 2 : 위의 코드는 Turtle 형식과 완벽하게 작동합니다. 이 문제는 JSON-LD 및 RDFJSON에서만 발생합니다.
먼저 감사합니다. 그것이 제가 찾고 있던 설정입니다. 그러나 새로운 문제가 있습니다 :'JSONLDMode.FLATTEN'과'JSONLDMode.EXPAND'는 잘 형성된 JSON을 전달하지 않습니다. 문자열의 첫번째 문자는'{'이 아니라'{'. 그것이 아마도 MongoDB에 저장 될 수없는 이유 일 것입니다. 게다가 선언 한 네임 스페이스를 사용하지 않기 때문에'@ context' 객체가 없습니다. 하지만'JSONLDMode.COMPACT'를 사용하면 모든 것이 잘 동작합니다. 이 문제가 발생할 수있는 원인을 알고 있습니까? – phly
하나의 요소가있는 배열로 변환하는 것처럼 보입니다. 사실 JSON이 잘 형성되었지만 조금 이상하게 보입니다. 왜 이런 일이 발생하는지 즉시 확신하지 못합니다 - RDF4J 프로젝트로 [지원 요청] (https://github.com/eclipse/rdf4j/issues)을 기록하는 것이 좋습니다. –