2012-04-30 46 views
1

我有这个xml文件,我该如何使用xpath和ModelFactory在java中创建RDF三元组?从XML创建RDF

<xml> 
<person> 
<name>Joe</name> 
<website url="www.example1.com">contact1</website > 
<vote>20</vote> 
</person> 
<person> 
<name>Anna</name> 
<website url="www.example2.com">contact2</website> 
<vote>80</vote> 
</person> 
</xml> 

感谢您的帮助重播


谢谢,我想获得以下RDF

<rdf:Description rdf:about="http://www.example.com/xml"> 
<j.0:hasCritic>Joe</j.0:hasCritic> 
    <rdf:Description rdf:about=Joe > 
    <j.0:haswebsite>"www.example1.com"</j.0:haswebsite> 
     <j.0:hascontact>contact1</j.0:hascontact> 
     <j.0:hasvote>80</j.0:hasvote> 
    </rdf:Description> 
    <j.0:hasCritic>Anna</j.0:hasCritic> 
    <rdf:Description rdf:about=Anna> 
    <j.0:haswebsite>"www.example2.com"</j.0:haswebsite> 
     <j.0:hascontact>contact2</j.0:hascontact> 
     <j.0:hasvote>20</j.0:hasvote> 
</rdf:Description> 
+0

http://stackoverflow.com/questions/10062994/extract-information-from-xml-file-as-rdf-triples –

+0

你可以写一个乌龟文件为例,RDF的可能重复你想获得? – castagna

+0

谢谢,我想得到我已经发布的以下RDF – Lucy

回答

4
You can use jena api for creating RDf model. Just parse xml file using dom parser and create Resourse , Property or Literal using Jena API. After creating this simply add into model. 

Example:- 
Model rdfModel = ModelFactory.createDefaultModel(); 
Resource resourse = rdfModel.createResource(Resourse Text); 
Property property = rdfModel.createProperty(Property Text); 
Literal literal = rdfModel.createLiteral(Literal Text); 
resourse.addLiteral(property,literal); 

使用Jena API,您可以将此模型存储到rdf数据库(三重)中。

+0

感谢Raxit的回复,使用jena似乎做我的工作,但我不知道如何使用jena从我有文件创建RDFs。因为在xml文件中每个标签都有三个属性,所以在这一点上我有点困惑。你可以请你的例子在我的XML文件?谢谢 – Lucy

+0

嗨,抱歉让我回复。你有没有得到答案,或者你仍然想要在RDF文件上面填充.. – Raxit

+0

嗨Raxit,是的,我解决了它,谢谢你的帮助 – Lucy

1

Grddl可能是一个可行的办法,耶拿有implementation这是非常简单的使用。否则,只需一个基本的XSLT脚本就可以很容易地将该片段转换为RDF。地狱,你甚至可能只是写一个基本的SAX监听器并在那里进行转换。没有什么神奇的东西可以为你做,你将不得不进行一些工作,但有可用的选择。

1
package tutorial; 
import com.hp.hpl.jena.rdf.model.Model; 
import com.hp.hpl.jena.rdf.model.ModelFactory; 
import com.hp.hpl.jena.rdf.model.Property; 
import com.hp.hpl.jena.rdf.model.Resource; 

public class Test01 { 
public static void main(String[] args) { 
Model m = ModelFactory.createDefaultModel(); 
String NS = "<http://www.example.com/>"; 

Resource r1 = m.createResource(NS+"xml"); 
Resource r2 = m.createResource(NS+"Joe"); 
Resource r3 = m.createResource(NS+"Anna");    
Property p1 = m.createProperty(NS+"hasCritic1"); 
Property p2 = m.createProperty(NS+"hasCritic2"); 
Property p3 = m.createProperty(NS+"hasWebsite"); 
Property p4 = m.createProperty(NS+"hasContact"); 
Property p5 = m.createProperty(NS+"hasVote"); 

r1.addProperty(p1,r2); 
r1.addProperty(p2,r3); 
r2.addProperty(p3,"<http://www.example1.com>"); 
r2.addProperty(p4,"contact1"); 
r2.addProperty(p5,"80"); 
r3.addProperty(p3,"<http://www.example2.com>"); 
r3.addProperty(p4,"contact2"); 
r3.addProperty(p5,"20"); 
m.write(System.out); 
} 
}