(영업 여러 API에 대한 질문 때문에) 내가 @Joshua 테일러의 솔루션을 반복하는 대신 예나의 OpenRDF 참깨 API 사용하고 있습니다 :
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.openrdf.model.Model;
import org.openrdf.model.Resource;
import org.openrdf.model.URI;
import org.openrdf.model.ValueFactory;
import org.openrdf.model.impl.LinkedHashModel;
import org.openrdf.model.impl.ValueFactoryImpl;
import org.openrdf.model.util.Literals;
import org.openrdf.model.vocabulary.RDF;
import org.openrdf.model.vocabulary.RDFS;
import org.openrdf.model.vocabulary.XMLSchema;
import org.openrdf.rio.RDFFormat;
import org.openrdf.rio.RDFHandlerException;
import org.openrdf.rio.Rio;
public class OpenIETripletConversionExample {
public static void main(String[] args) throws UnsupportedEncodingException, RDFHandlerException {
// Create the model and define some prefixes (for nice serialization in RDF/XML and TTL)
Model model = new LinkedHashModel();
String NS = "http://stackoverflow.com/q/24897405/1281433/";
model.setNamespace("rdf", RDF.NAMESPACE);
model.setNamespace("rdfs", RDFS.NAMESPACE);
model.setNamespace("xsd", XMLSchema.NAMESPACE);
model.setNamespace("", NS);
// Create a ValueFactory we can use to create resources and statements
ValueFactory vf = ValueFactoryImpl.getInstance();
// Preserve the confidence level (optional).
URI confidence = vf.createURI(NS, "confidence");
// Define some triplets to convert.
Object[][] triplets = {
{ 0.57, "The quick brown fox", "jumped", "over the lazy dog." },
{ 0.93, "The rail launchers", "are", "conceptually similar to the underslung SM-1." }
};
// For each triplet, create a resource representing the sentence, as well as the subject,
// predicate, and object, and then add the triples to the model.
for (Object[] triplet : triplets) {
Resource sentence = vf.createBNode();
Resource subject = vf.createBNode();
URI predicate = vf.createURI(NS, URLEncoder.encode((String) triplet[2], "utf-8"));
Resource object = vf.createBNode();
model.add(subject, RDFS.LABEL, Literals.createLiteral(vf, triplet[1]));
model.add(object, RDFS.LABEL, Literals.createLiteral(vf, (String)triplet[3]));
model.add(sentence, confidence, Literals.createLiteral(vf, triplet[0]));
model.add(sentence, RDF.SUBJECT, subject);
model.add(sentence, RDF.PREDICATE, predicate);
model.add(sentence, RDF.OBJECT, object);
}
// Show the model in a few different formats.
Rio.write(model, System.out, RDFFormat.TURTLE);
Rio.write(model, System.out, RDFFormat.RDFXML);
Rio.write(model, System.out, RDFFormat.NTRIPLES);
}
}
을 나는 당신의 이전의 질문을 보았지만, 여기에는 자급 자족 할만한 것이 충분하지 않습니다. 예를 들어, "파일의 각 개별 항목 : 제목에 빈 노드 식별자 만들기"를 원하지만 "파일의 별개 : 제목"이 무엇인지는 말하지 않았습니다. 이러한 라이브러리 중 하나를 사용하여 특정 출력을 생성하는 방법을 묻는 것이므로 먼저 샘플 출력을 생성하십시오. 예를 들어, 우리에게 보여준 문장에 대해 생성되어야하는 RDF는 무엇입니까? 트리플 (..., ...; ...)이 트리플에 매핑되어야합니까, 아니면이 특정 데이터에 대해 단지 운 좋은 사고입니까? –
출력을 http://pastebin.com/sFwfqLFM과 비슷하게 만들지시겠습니까? –
위의 예에서 문장에 대해 생성해야하는 RDF를 의미했습니다. –