我试图合并2个现有的RDF/XML模型。我尝试了不同的解决方案:将模型添加到现有模型中RDF
model1.union(model2)
model1.add(model2) //adding a complete model
model1.add(model2.listStatements())
我在Java中使用耶拿。
我从第二个模型中删除了包络标签(如Equipment
),但我总是有同样的问题:结果模型没有真正合并:它包含每个添加模型的包络。例如,我有2个文件,但有不同的端点。他们应该合并有一个文件,它包含了所有的数据:
bookid123在endpointA
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="http://www.w3schools.com/rdf/">
<rdf:Description rdf:about="http://endpointA/bookid123">
<si:title>W3Schools.com</si:title>
</rdf:Description>
</rdf:RDF>
bookid123在endpointB
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="http://www.w3schools.com/rdf/">
<rdf:Description rdf:about="http://endpointB/bookid123">
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
至于结果,我是这样的:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="http://www.w3schools.com/rdf/">
<rdf:Description rdf:about="http://endpointA/bookid123">
<si:title>W3Schools.com</si:title>
</rdf:Description>
<rdf:Description rdf:about="http://endpointB/bookid123">
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
但我需要像th是:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="http://www.w3schools.com/rdf/">
<rdf:Description rdf:about="http://couldbeanything/bookid123">
<si:title>W3Schools.com</si:title>
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
难道还有比得到的model1
每个语句,将其添加到model2
一个更聪明的办法,除了因为源-URI的它们是不同的语句?
两者都不这些片段是有效的RDF/XML,所以我怀疑第一个是你得到的,我怀疑第二个是你想要的!您可能已经知道RDF是用主谓谓词对象三元组来定义的,所以如果您说出每个模型中的三倍,以及最终模型中您想要的三倍,这将有所帮助。谈论XML标签只是混淆了事情。另外,你在使用什么库?我猜这是Apache Jena,但是那里有很多RDF库。 – cygri
我编辑了我的示例并添加了更多信息。你说得对,我正在Java项目中使用jena库。 – wassermine