繁体   English   中英

如何将SPARQL查询结果导出到csv?

[英]How to export SPARQL query result to csv?

我有一个rdf文件,看起来像这样(但实际上更大):

@prefix skos-xl: <http://www.w3.org/2008/05/skos-xl#> .
@prefix dct:   <http://purl.org/dc/terms/> .
@prefix adms:  <http://www.w3.org/ns/adms#> .
@prefix esco:  <http://data.europa.eu/esco/model#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix org:   <http://www.w3.org/ns/org#> .
@prefix iso-thes: <http://purl.org/iso25964/skos-thes#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix skos:  <http://www.w3.org/2004/02/skos/core#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix prov:  <http://www.w3.org/ns/prov#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .


<http://data.europa.eu/esco/skill/238343b1-7b51-42b3-a9ed-cf24d3a236e7>
        a                       skos:Concept , esco:MemberConcept , esco:Skill ;
        esco:referenceLanguage  "en"^^xsd:language ;
        esco:skillReuseLevel    <http://data.europa.eu/esco/skill-reuse-level/transversal> ;
        esco:skillType          <http://data.europa.eu/esco/skill-type/skill> ;
        dct:description         <http://data.europa.eu/esco/node-literal/447a21ac-f4e0-41e1-a478-1b7cd4c29af8> , <http://data.europa.eu/esco/node-literal/d9f98a36-44fb-4318-bfd9-6ac6b520b034> ;
        iso-thes:status         "released" ;
        skos:altLabel           "reconocer las carencias en competencias digitales"@es , "bearnaí maidir le cumas digiteach a aithint"@ga , "identificere manglende digitale kundskaber"@da , "digitale vaardigheidskloven identificeren"@nl , "detectar las deficiencias en competencias digitales"@es , "behoeften aan digitale vaardigheden herkennen"@nl , "παροχή υποστήριξης για την αντιμετώπιση ελλείψεων όσον αφορά την ψηφιακή ικανότητα"@el , "detectar las lagunas en competencias digitales"@es , "tunnistaa digitaalisten taitojen puutteet"@fi , "Lücken bei den IKT-Kompetenzen erkennen"@de ;
        skos:broader            <http://data.europa.eu/esco/skill/7e5147d1-60b1-4a68-804b-1f5cb0396b91> ;
        skos:broaderTransitive  <http://data.europa.eu/esco/skill/7e5147d1-60b1-4a68-804b-1f5cb0396b91> ;
        skos:inScheme           <http://data.europa.eu/esco/concept-scheme/skill-ict-groups> ;
        skos:prefLabel          "digitale vaardigheidskloven herkennen"@nl , "εντοπισμός ελλείψεων όσον αφορά την ψηφιακή ικανότητα"@el , [...] .

我已经阅读了很多有关该主题的文章,但是我仍然不太了解如何使用Java将文件转换为csv(甚至是JSON)。 到目前为止,我一直在使用以下脚本来提取图中存在的所有三元组并在控制台中将它们打印出来:

package semanticweb;

import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.ResultSet;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        getData();
    }

    static void getData(){

        Model model = ModelFactory.createDefaultModel() ;
        model.read("C:/Users/andri/eclipse-workspace/semanticweb/ict_skills_collection.ttl");

        String queryString = "PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>" +
                "PREFIX dct:   <http://purl.org/dc/terms/>" +
                "PREFIX adms:  <http://www.w3.org/ns/adms#>" +
                "PREFIX esco:  <http://data.europa.eu/esco/model#>" +
                "PREFIX rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#>" +
                "PREFIX org:   <http://www.w3.org/ns/org#>"+
                "PREFIX iso-thes: <http://purl.org/iso25964/skos-thes#>"+
                "PREFIX xsd:   <http://www.w3.org/2001/XMLSchema#>" +
                "PREFIX skos:  <http://www.w3.org/2004/02/skos/core#>" +
                "PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#>" +
                "PREFIX prov:  <http://www.w3.org/ns/prov#>"+
                "PREFIX foaf:  <http://xmlns.com/foaf/0.1/>" +  
                "SELECT *"+
                 "WHERE { ?s ?p ?o }"; 


        Query query = QueryFactory.create(queryString);
        QueryExecution qexec = QueryExecutionFactory.create(query, model);

        try {

         ResultSet results = qexec.execSelect();
         while(results.hasNext()) {
             QuerySolution qsol = results.nextSolution();
             System.out.println(qsol.toString());
         }
        }
            finally {
                qexec.close();
            }   


    }

}

控制台输出看起来像这样:

( ?p = <http://www.w3.org/2004/02/skos/core#prefLabel> ) ( ?o = "Defizite bei der digitalen Kompetenz ermitteln"@de ) ( ?s = <http://data.europa.eu/esco/skill/238343b1-7b51-42b3-a9ed-cf24d3a236e7> ) -> [Root]
( ?p = <http://www.w3.org/2004/02/skos/core#prefLabel> ) ( ?o = "identifikovat nedostatky v digitalnych kompetenciach"@sk ) ( ?s = <http://data.europa.eu/esco/skill/238343b1-7b51-42b3-a9ed-cf24d3a236e7> ) -> [Root]
( ?p = <http://www.w3.org/2004/02/skos/core#prefLabel> ) ( ?o = "identificar lacunas nas competencias digitais"@pt ) ( ?s = <http://data.europa.eu/esco/skill/238343b1-7b51-42b3-a9ed-cf24d3a236e7> ) -> [Root]

有谁知道如何将这种三重格式转换为csv? 为了做到这一点,我是否需要了解这些三元组的确切含义? 感谢您能提供的任何帮助

您可以使用类似:

public void writemodel(OntModel model) {
    model.write(System.out, "JSON-LD");
    model.write(System.out, "RDF/JSON");
}

要编写您的resultSet,您可以使用

ResultSetFormatter.outputAsCSV(OutputStream, resultSet);
ResultSetFormatter.outputAsJSON(OutputStream, resultSet);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM