Converter 对于ApacheJena输入:从CSV到RDF格式的转换

Converter 对于ApacheJena输入:从CSV到RDF格式的转换,converter,rdf,jena,rdfs,apache-jena,Converter,Rdf,Jena,Rdfs,Apache Jena,我将使用ApacheJena,它采用RDF作为输入格式。但我有CSV格式的数据。我做了很多研究,但找不到一个方法来转换它。有人知道如何有效地做到这一点吗 我已经浏览过xml123之类的工具,但下载链接不起作用 使用jena arq和jena csv(均为v3.0.1),以下方法对我有效: public static void main(String ... strings) throws Exception { CSV2RDF.init(); //load through man

我将使用ApacheJena,它采用RDF作为输入格式。但我有CSV格式的数据。我做了很多研究,但找不到一个方法来转换它。有人知道如何有效地做到这一点吗


我已经浏览过xml123之类的工具,但下载链接不起作用

使用jena arq和jena csv(均为v3.0.1),以下方法对我有效:

public static void main(String ... strings) throws Exception {
    CSV2RDF.init();
    //load through manager:
    //Model m = RDFDataMgr.loadModel("test.csv") ;
    //classic way to load:
    Model m = ModelFactory.createDefaultModel();
    try (InputStream in = JenaCSVTest.class.getResourceAsStream("/test.csv")) {
        m.read(in, "http://example.com", "csv");
    }
    m.setNsPrefix("test", "http://example.com#");
    m.write(System.out, "ttl");
}
输入(test.csv):

输出(海龟中的rdf):

此代码段将生成以下RDF:

@prefix test:  <http://example.com#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .

[ a                test:Row ;
  test:population  123000 ;
  test:town        "Southton"
] .

[ a                test:Row ;
  test:population  654000 ;
  test:town        "Northville"
] .
@前缀测试:。
@前缀xsd:。
[a测试:行;
测试:人口123000;
测试:“南顿”镇
] .
[a测试:行;
试验:人口654000;
测试:小镇“Northville”
] .

您还可以使用它构建通用的CSV/RDF图,然后使用SPARQL
构造
查询对其进行转换。(免责声明:我是作者)

Tmp1.class来自哪里?这是耶拿的属地吗?哪一个是正确的导入需要?它是关于java的,而不是关于jena的
Tmp1
是工作示例类的名称。请阅读javadoc以了解
java.lang.Class#getResourceAsStream(String)
方法,
@prefix test:  <http://example.com#> .

[ test:Population  "123000"^^<http://www.w3.org/2001/XMLSchema#double> ;
  test:Town        "Southton" ;
  <http://w3c/future-csv-vocab/row>
          1
] .

[ test:Population  "654000"^^<http://www.w3.org/2001/XMLSchema#double> ;
  test:Town        "Northville" ;
  <http://w3c/future-csv-vocab/row>
          2
] .
    Path file = Paths.get(JenaCSVTest.class.getResource("/test.csv").toURI());
    String base = "http://example.com#";
    Model m = ModelFactory.createDefaultModel().setNsPrefix("xsd", XSD.getURI()).setNsPrefix("test", base);
    Graph g = m.getGraph();
    CSVOptions op = new CSVOptions();
    op.setDefaultsForCSV();
    String query = "PREFIX test: <" + base + ">\n" +
            "PREFIX xsd: <" + XSD.getURI() + ">\n" +
            "CONSTRUCT {\n" +
            "  ?Row a test:Row;\n" +
            "    test:town ?town;\n" +
            "    test:population ?population;\n" +
            "} \n" +
            "WHERE {\n" +
            "  BIND (BNODE() AS ?Row)\n" +
            "  BIND (xsd:string(?Town) AS ?town)\n" +
            "  BIND (xsd:integer(?Population) AS ?population)\n" +
            "}";
    TarqlQuery q = new TarqlQuery(QueryFactory.create(query));
    InputStreamSource src = InputStreamSource.fromFilenameOrIRI(file.toUri().toString());
    TarqlQueryExecution qe = TarqlQueryExecutionFactory.create(q, src, op);
    qe.execTriples().forEachRemaining(g::add);
    m.write(System.out, "ttl");
@prefix test:  <http://example.com#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .

[ a                test:Row ;
  test:population  123000 ;
  test:town        "Southton"
] .

[ a                test:Row ;
  test:population  654000 ;
  test:town        "Northville"
] .