如何在 Node.js 中使用 rdflib.js 或 rdf-parser-rdfxml 解析 RDF/XML
how to parse RDF/XML using rdflib.js or rdf-parser-rdfxml in Node.js
我正在尝试读取一个rdf/xml文件,并以JSON或JavaScript对象或任何其他格式解析它。我尝试搜索很多节点库,但找不到任何好的例子。所有这些都提供了一些没有适当文档的 API(或者他们提供了但我没有正确理解)。这是我尝试过的东西。
var fs = require('fs'),
rdfParser = require('rdf-parser-rdfxml');
var res=rdfParser(__dirname+'/1.xml');
console.log(res);
这是 1.xml 个文件
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:oneM2M="http://www.onem2m.org/ontology/Base_Ontology#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:cfso="http://203.254.173.81:8080/ontologies/ConnectedFarmServiceOntology.owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
<oneM2M:Thing rdf:about="http://203.254.173.81:8080/ontologies/ConnectedFarmServiceOntology.owl#KETICF">
<cfso:hasSpecies>
<cfso:Species rdf:about="http://203.254.173.81:8080/ontologies/ConnectedFarmServiceOntology.owl#Type1"/>
</cfso:hasSpecies>
<cfso:hasSPName>
<cfso:SPName rdf:about="http://203.254.173.81:8080/ontologies/ConnectedFarmServiceOntology.owl#Maxfor"/>
</cfso:hasSPName>
<cfso:hasLocation>
<cfso:Location rdf:about="http://203.254.173.81:8080/ontologies/ConnectedFarmServiceOntology.owl#Buyeo"/>
</cfso:hasLocation>
<cfso:hasCropName>
<cfso:CropName rdf:about="http://203.254.173.81:8080/ontologies/ConnectedFarmServiceOntology.owl#CharryTomato">
<cfso:hasSpecies rdf:resource="http://203.254.173.81:8080/ontologies/ConnectedFarmServiceOntology.owl#Type1"/>
</cfso:CropName>
</cfso:hasCropName>
<cfso:hasControlMode>
<cfso:ControlMode rdf:about="http://203.254.173.81:8080/ontologies/ConnectedFarmServiceOntology.owl#A"/>
</cfso:hasControlMode>
</oneM2M:Thing>
</rdf:RDF>
我也尝试过使用rdflib.js以非常相似的方式。
var fs = require('fs'),
$rdf = require('rdflib');
//var parser = new xml2js.Parser();
fs.readFile(__dirname + '/1.xml', function(err, data) {
// Fetch data via a regular AJAX call, load from a file, or pass in a literal
// string. In this example, it was loaded from 'https://fred.me/profile'
var store = $rdf.graph() // Init a new empty graph
var contentType = 'application/rdf+xml'
var baseUrl = ""
var parsedGraph = $rdf.parse(data, store, baseUrl, contentType);
$rdf.parse(data,function(triples){
for (var i in triples){
console.log(triples[i]);
}
})
});
帮我找人:)提前感谢
我发现fs.readFile返回Object而不是String。所以修改后的源在这里:
var fs = require('fs'),
$rdf = require('rdflib');
var rdfData=fs.readFileSync(__dirname+'/1.xml').toString();
var store=$rdf.graph();
var contentType='application/rdf+xml';
var baseUrl="http://IoFTriples.com";
try{
$rdf.parse(rdfData,store,baseUrl,contentType);
var stms = store.statementsMatching(undefined, undefined , undefined);
for (var i=0; i<stms.length;i++) {
var stm = stms[i]
console.log(stm) // the WebID of a friend
}
} catch(err){
console.log(err);
}
相关文章:
- 使用Angular.js解析JSON中的嵌套对象数组
- Knockout JS-解析/格式化值(extenders?)
- 带有Angular JS解析列表的picklest
- 使用 PEG.js 解析缩进级别
- 使用JS解析JSON文件(URL)
- 使用flash进行JS解析
- 使用 Date.js 解析 12 小时格式时获取 null
- 使用 D3.js 解析上传的 CSV 文件
- 主干.js解析未修改的响应
- 获取邮件中的信息.php从函数.js解析为manage.html
- 节点.js解析 fs.readFile() 的意外数字转换
- 节点.js解析路由的最小函数
- 使用 PEG.js 解析完整的数学表达式
- 仅使用 JS 解析 JS
- 骨干.js解析路由器中的可选页面查询字符串
- 检测车把.js解析/语法错误.(客户端模板化)
- PEG.JS解析逻辑变量名称,其操作数和值
- 如何使用 Math.js 解析器测试 MySQL 语法
- 通过 JS 解析 URL 参数,但仅将前八个字符作为值添加到 HTML 表单中
- JS:解析 x 的公式