[英]Mapping RDF/XML data to java objects
我已经设置了一个Web爬网程序,该爬网程序收集数据并将其存储在rdf / xml文件中,现在我想将该数据映射到我的Java对象...我该怎么做?
我发现这段代码可能对我有用,但是我似乎无法正确使用它...它从rdf / xml文件中收集主题,谓词和对象,但是我可以用我的java指定的对象表示该数据,我不知道该怎么...我用谷歌搜索了很多,但是对此没有很多有用的东西,所以帮帮我!
StmtIterator iter = rdfGraph.listStatements();
while (iter.hasNext()) {
Statement stmt = iter.nextStatement(); // get next statement
Resource subject = stmt.getSubject();
//System.out.print(subject.getNameSpace( ) + subject.getLocalName( ));// get the subject
Property predicate = stmt.getPredicate();
//System.out.print(" " + predicate.getNameSpace( ) + predicate.getLocalName( ));// get the predicate
RDFNode object = stmt.getObject(); // get the object
//System.out.println(" " + object.toString( ) + "\n");
System.out.println(subject + " | "+predicate + " | " + object);
}
这是我的rdf文件的一部分...
<rdf:Description rdf:nodeID="A12">
<schema:reviewRating rdf:nodeID="A13"/>
<schema:description>descriptiooooon</schema:description>
<schema:datePublished>2012-02-22</schema:datePublished>
<schema:author>Nick M.</schema:author>
<rdf:type rdf:resource="http://schema.org/Review"/>
</rdf:Description>
我想用这个java对象代表它。这是我的课...
@Namespace(Constants.SCHEMA)
@RdfType("Review")
public class Review extends Thing{
@RdfProperty(Constants.SCHEMA + "author")
private String author;
@RdfProperty(Constants.SCHEMA + "reviewRating")
private Rating reviewRating;
@RdfProperty(Constants.SCHEMA + "datePublished")
private Date datePublished;
@RdfProperty(Constants.SCHEMA + "description")
private String description;
}
也许这个API对您可能有用: XMappr API
好吧,您还没有告诉我们
我可以用我的java指定的对象表示此数据,
实际上意味着,因为您尚未描述Java对象。
我猜是一个问题,问题是您一次访问RDF模型的内容只有一个三元组( Statement
)。 这是一种低级访问模式。 您需要识别的第一件事是具有相同主题URI的三元组表示有关相同RDF资源的信息。 因此,您可以做的一件事是遍历模型的主题,然后列出它们的属性:
ResourceIterator i = rdfGraph.listSubjects();
while (i.hasNext()) {
Resource s = i.next();
System.out.println( "Graph contains subject " + s );
for (StmtIterator j = s.listProperties(); j.hasNext(); ) {
Statement t = j.next();
System.out.println( " with property " + t.getPredicate() +
" ---> " + t.getObject() );
}
}
这将使您对图中的语句分组的基本层次有所了解。 实际上,您可能只想从某种rdf:type
资源开始,这很容易做到。
这将是使用RDF数据的更常见的基本模式。 如果确实需要将图形中的资源映射到Java对象,请查看JenaBean之类的项目。 但是请注意,该代码已经很旧了,可能需要进行修改才能与当前版本的Jena一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.