1

我有这个 xml 文件,如何在 java 中使用 xpath 和 ModelFactory 从它创建 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>
4

3 回答 3

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 数据库(三重)中。

于 2012-05-05T13:40:34.047 回答
1

Grddl可能是一种可行的方法,Jena 有一个非常易于使用的实现。否则,只需一个基本的 XSLT 脚本就可以很容易地将该片段转换为 RDF。天哪,您甚至可以只编写一个基本的 SAX 侦听器并在那里进行转换。没有什么神奇的东西可以为你做这件事,你将不得不做一些工作,但有可用的选项。

于 2012-05-01T18:13:32.720 回答
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 );
} 
}
于 2013-08-27T13:14:40.187 回答