AMQP 메시지 중개자의 문자열 메시지가 RDF 문으로 구성되어 있습니다. Java를 사용하여 Jena 모델로 변환 한 다음 변환 된 모델을 다른 모델과 단일 모델로 병합하려고합니다. 어떻게해야합니까?문자열 메시지를 Jena 모델로 변환하기위한 Java 코드
0
A
답변
1
이것은 세 가지 논리적 단계로 나눌 수 있습니다. 이들 중 일부는, 당신은 이미했을 수 있습니다
- 는
- 는 결과 문자열을 구문 분석 (# 1의 일부가 될 수 있음) RDF에 사용되는 구문을 확인 비 RDF 텍스트
- 에서 RDF 문을 분리 아파치 예나
Model
.
첫 번째 두 개는 도메인에 따라 다르므로 몇 가지 입력 예를 제공하지 않으면 많은 도움을받을 수 없습니다. 또한 별도의 질문으로 간주 될 수 있습니다 (예 : 'RDF 구문의 존재 여부에 따라 문자열을 분할하는 방법')
셋째로, 매우 빠르고 쉽습니다. 나머지 텍스트에서 추출한 N-Triples
형식의 문서가 있다고 가정 해 보겠습니다. 다음 JUnit 테스트는 해당 내용을 구문 분석하고 해당 내용과 상호 작용하는 기능을 보여줍니다.
final String nTriplesDoc = "<urn:ex:s> <urn:ex:p> <urn:ex:o> . ";
final Model model = ModelFactory.createDefaultModel();
try(final InputStream in = new ByteArrayInputStream(nTriplesDoc.getBytes("UTF-8"))) {
/* Naturally, you'd substitute the syntax of your actual
* content here rather than use N-TRIPLE.
*/
model.read(in, null, "N-TRIPLE");
}
final Resource s = ResourceFactory.createResource("urn:ex:s");
final Property p = ResourceFactory.createProperty("urn:ex:p");
final Resource o = ResourceFactory.createResource("urn:ex:o");
assertTrue(model.contains(s,p,o));
편집/파트 II
의견을 본 후, 나는 신중 모델의 병합에 대한 또 다른 메모를 추가 할 수 느꼈다. Jena에서는 모든 트리플을 함께 추가하여 모델을 병합 할 수 있습니다. 이로 인해 가비지 수집되는 일부 남은 모델이 만들어 질 수 있으며 이는 반드시 시스템에 가장 적합한 시나리오는 아닙니다.
final Model model0 = ModelFactory.create();
// Add things to model 0...
final Model model1 = ModelFactory.create();
// Add things to model 1...
final Model merger = ModelFactory.create();
merger.add(model0);
merger.add(model1);
이 예제에서 두 소스 모델은 이제 수집이 필요합니다. 그것은 모든 트리플의 대상으로 기존 모델 중 하나를 사용하거나 두 개의 기본 그래프의 결합의 모델을 만들 수 중 하나에 현명 할 것이다 (두 그래프의 결과를 다시 사용) :
final Model union = ModelFactory.createModelForGraph(new Union(model0.getGraph(), model1.getGraph()));
또한 AMQP 서버에서 String
개체를 얻을 수 있다는 가정을 남겨두기 때문에이 대답의 첫 번째 부분에서 # 3은 여전히 시나리오와 관련이 있습니다.
관련 문제
- 1. 하나의 모델을 다른 모델로 변환하기위한 디자인 패턴
- 2. ontology with java (jena)
- 3. nullable integer로 변환하기위한 최적화 코드
- 4. NFA를 DFA로 변환하기위한 의사 코드
- 5. 긴 문자열을 URL로 변환하기위한 코드
- 6. Java Xerces jar 및 Jena
- 7. JSP를 포틀릿 용 클래스로 변환하기위한 코드
- 8. 비디오를 mp3로 변환하기위한 Java SDK
- 9. HTML을 변환하기위한 안전한 API (Java)
- 10. 비 Java 소스를 Java 소스로 변환하기위한 도구
- 11. 문자열 용 Java 코드 검색
- 12. Java 원시 코드 문자열 끝
- 13. Java 코드 SPARQL 파서
- 14. 알려진 문자열 사이를 변환하기위한 인코딩 식별
- 15. 부동 소수점을 고정 소수점으로 변환하기위한 VHDL 코드?
- 16. 비디오를 바이트 배열로 변환하기위한 자바 코드
- 17. jade를 html로 변환하기위한 코드 편집기 플러그인이 있습니까?
- 18. OMML을 MathML로 변환하기위한 알고리즘 또는 코드
- 19. HTML로 변환하기위한 오픈 소스 Java 라이브러리?
- 20. .NET to Java 코드 변환
- 21. Jena 결과가 문자열로 설정되었습니다.
- 22. Jena : Java에서 SPARQL (Jena) ResultSet의 정수 결과를 얻는 방법은 무엇입니까?
- 23. 조각이있는 Jena RDF 리소스 URI
- 24. 브라우저에 표시 할 Java 문자열 (소스 코드)
- 25. Java - 검색 문자열 (바이트 코드 용)
- 26. Java 바이트 코드 (jar)로 문자열 수정
- 27. 데이터베이스에서 Java 하드 코드 문자열 객체
- 28. Java 문자열 해시 코드 (MySQL의 ID :
- 29. 파이썬에서 TreeView를위한 모델로 PHP에서 직렬화 된 문자열
- 30. Jena Sparql 및 구성
답장을 보내 주신 Rob에게 감사드립니다. 아이디어는 내 메서드가 activeMQ 서버에서 문자열 형식의 RDF 메시지를 읽고이를 모델로 변환 한 다음 다른 RDF 리소스와 병합하여 하나의 단일 모델로 만들어야한다는 것입니다. 그래서 제가 언급 한 두 가지 첫 번째 단계는 필자의 경우에는 필요하지 않습니다. –
@SanaBaccar Sana는 "감사합니다. ** **하지만 ..."은 대답이 유용함을 의미하지만 질문에 완전히 답변하지는 않았습니다. 그러나 답변을 수락 한 것으로 표시했습니다. 응답이 받아 들여지면 다른 사용자가 추가 답변을 제공 할 가능성이 적기 때문에 귀하의 질문에 완전히 답변하지 않은 경우 아직 수락하지 않아야합니다. –