【问题标题】:Rdflib.js, how to serialize the data into turtle (.ttl) format?Rdflib.js,如何将数据序列化为turtle(.ttl)格式?
【发布时间】:2016-03-18 23:44:16
【问题描述】:

如何使用 rdflib.js 序列化海龟中的 RDF?没有太多的文档。我可以使用:

Serializer.statementsToN3(destination);

序列化成 N3 格式,但除此之外不多。我尝试将上述命令更改为 statementsToTtl/Turtle/TURTLE/TTL 之类的内容,但似乎没有任何效果。

【问题讨论】:

    标签: serialization rdf semantic-web linked-data turtle-rdf


    【解决方案1】:

    想通了。由this (secret) Github gist 提供。

    $rdf.serialize(undefined, source, undefined,` 'text/turtle', function(err, str){
    // do whatever you want, the data is in the str variable.
    })
    

    这是来自上述 Github gist 的代码。

    /**
    * rdflib.js with node.js -- basic RDF API example.
    * @author ckristo
    */
    
    var fs = require('fs');
    var $rdf = require('rdflib');
    
    FOAF = $rdf.Namespace('http://xmlns.com/foaf/0.1/');
    XSD  = $rdf.Namespace('http://www.w3.org/2001/XMLSchema#');
    
    // - create an empty store
    var kb = new $rdf.IndexedFormula();
    
    // - load RDF file
    fs.readFile('foaf.rdf', function (err, data) {
    if (err) { /* error handling */ }
    
    // NOTE: to get rdflib.js' RDF/XML parser to work with node.js,
    // see https://github.com/linkeddata/rdflib.js/issues/47
    
    // - parse RDF/XML file
    $rdf.parse(data.toString(), kb, 'foaf.rdf', 'application/rdf+xml', function(err, kb) {
        if (err) { /* error handling */ }
    
        var me = kb.sym('http://kindl.io/christoph/foaf.rdf#me');
    
        // - add new properties
        kb.add(me, FOAF('mbox'), kb.sym('mailto:e0828633@student.tuwien.ac.at'));
        kb.add(me, FOAF('nick'), 'ckristo');
    
        // - alter existing statement
        kb.removeMany(me, FOAF('age'));
        kb.add(me, FOAF('age'), kb.literal(25, null, XSD('integer')));
    
        // - find some existing statements and iterate over them
        var statements = kb.statementsMatching(me, FOAF('mbox'));
        statements.forEach(function(statement) {
            console.log(statement.object.uri);
        });
    
        // - delete some statements
        kb.removeMany(me, FOAF('mbox'));
    
        // - print modified RDF document
        $rdf.serialize(undefined, kb, undefined, 'application/rdf+xml', function(err, str) {
            console.log(str);
        });
    });
    });
    

    【讨论】:

    • 在实践中,大多数写为“N3”的库实际上都是针对海龟(它是 N3 的一个子集)。如果你使用 statementsToN3,你可能会在实践中得到 Turtle。
    • 你能把这个要点公开吗?由于它是秘密的,看来你必须有一个 github 帐户才能访问它。更好的办法是将代码粘贴到您的答案中。
    猜你喜欢
    • 2019-11-24
    • 2019-02-25
    • 2020-11-06
    • 2016-11-10
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    相关资源
    最近更新 更多