用jena api来理解RDF——空节点
在RDF入门的例子中,有这样一幅图:

最中间的那个节点起一个过渡作用,这时,虽然它也是一个资源,但这个资源没有必要标上资源描述符,因为它可能只在应用程序局部使用,作为推理机的一个桥梁等等作用,换句说,这个资源别人没有必要去引用。这样的节点,我们称之为空节点:
- Model model = ModelFactory.createDefaultModel();
- Resource blankNode = model.createResource(new AnonId("tempNode"));
- Property city = model.createProperty("http://www.crabobe.com/city");
- Property street = model.createProperty("http://www.crabobe.com/street");
- blankNode.addProperty(city, "深圳");
- blankNode.addProperty(street, "龙岗");
- Resource crab = model.createResource("http://www.crabobe.com/crab");
- Property address = model.createProperty("http://www.crabobe.com/address");
- crab.addProperty(address, blankNode);
- model.write(System.out);
注意,包含中文的源码文件必须是UTF-8的,运行结果如下:
- <rdf:RDF
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:j.0="http://www.crabobe.com/" >
- <rdf:Description rdf:about="http://www.crabobe.com/crab">
- <j.0:address rdf:nodeID="A0"/>
- </rdf:Description>
- <rdf:Description rdf:nodeID="A0">
- <j.0:street>龙岗</j.0:street>
- <j.0:city>深圳</j.0:city>
- </rdf:Description>
- </rdf:RDF>
周末有空,到处逛逛,呵呵