[英]JENA RDF/XML format rdfs example
有人能給我一個工作示例( 在Java代碼中 )如何使用Jena創建如下所示的RDFS相關語句?
<rdf:Property rdf:about="http://www.help.me/confused/PropertyName">
<rdfs:domain rdf:resource="http://www.help.me/confused/ClassName"/>
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
</rdf:Property>
我手動創建了一個RDF / XML模式,它驗證正確但不知何故實體在SPARQL中不能一起工作(即使啟用了推理引擎)。 所以,我決定從一開始就使用Jena API創建整個事情,以確保它是正確的。
我已經更改了命名空間,只是為了讓這段代碼最終指向這篇文章,但無論如何,我得到了這個輸出:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Property rdf:about="http://stackoverflow.com/q/20194409/1281433/PropertyName">
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
<rdfs:domain rdf:resource="http://stackoverflow.com/q/20194409/1281433/ClassName"/>
</rdf:Property>
</rdf:RDF>
從這段代碼:
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.vocabulary.RDFS;
public class JenaPropertyExample {
public static void main(String[] args) {
final String NS = "http://stackoverflow.com/q/20194409/1281433/";
final Model model = ModelFactory.createDefaultModel();
final Property p = model.createResource( NS+"PropertyName", RDF.Property ).as( Property.class );
p.addProperty( RDFS.domain, model.createResource( NS+"ClassName" ));
p.addProperty( RDFS.range, RDFS.Literal );
model.write( System.out, "RDF/XML-ABBREV" );
}
}
一般來說,僅僅因為輸出是合法的RDF並不意味着你以預期的方式使用屬性和類。 Jena的普通Model
界面對此無法幫助你,因為你仍然可以錯誤地使用屬性,但至少,如果你使用Jena的預定義詞匯表類,你將獲得正確的IRI。 如果你可以使用OntModel,你可以獲得一個稍微好一點的抽象層。 例如,以下方法生成相同的RDF / XML輸出,但允許您使用createOntProperty
等方法並免費獲取p rdf:type rdf:Property
triple,以及addRange
和addDomain
等方法:
public static void main2( String[] args ) {
final String NS = "http://stackoverflow.com/q/20194409/1281433/";
final OntModel model = ModelFactory.createOntologyModel( OntModelSpec.RDFS_MEM );
OntProperty p = model.createOntProperty( NS+"PropertyName" );
p.addDomain( model.getOntClass( NS+"ClassName" ));
p.addRange( RDFS.Literal );
model.write( System.out, "RDF/XML-ABBREV" );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.