[英]create RDF using defined OWL ontology
我正在為數據庫表生成RDF。 我使用Protégé為表生成了OWL本體。 我想使用該OWL本體並使用Jena為表數據創建RDF / XML格式的RDF。 我知道如何將RDF和OWL文件讀寫到內存中以生成模型,並且知道如何使用Resource,Property,ModelFactory等類生成RDF。 我無法做的是使用生成的本體(OWL文件)並為那些OWL類創建RDF實例。 例如:
樣本貓頭鷹:
<owl:Class rdf:about="Person"/>
<owl:Class rdf:about="Animal"/>
<owl:DatatypeProperty rdf:about="salary">
<rdfs:domain rdf:resource="Person"/>
<rdfs:range rdf:resource="&xsd;real"/>
</owl:DatatypeProperty>
所需的RDF:
<Person rdf:about="Jack">
<salary>1234</salary>
</Person>
我能夠生成如下RDF:
<rdf:Description rdf:about="Jack">
<ns:salary>2004</ns:salary>
</rdf:Description>
所需輸出與現在正在創建的輸出之間的唯一區別是存在Triple :Jack rdf:type :Person
(並且,如果需要,可以定義默認名稱空間,這樣就不需要ns:
前綴了)在您的XML元素上)。
從您的RDF開始
<rdf:Description rdf:about="Jack">
<ns:salary>2004</ns:salary>
</rdf:Description>
並添加三重Jack rdf:type Person
,您將擁有
<rdf:Description rdf:about="Jack">
<rdf:type rdf:resource="Person"/>
<ns:salary>2004</ns:salary>
</rdf:Description>
RDF / XML規范允許rdf:type
三元組的簡寫rdf:type
; 如果該類型的URI可以縮寫為XML名稱,則可以將其用作元素名稱。 使用此速記,您可以
<ns:Person rdf:about="Jack">
<ns:salary>2004</ns:salary>
</ns:Person>
除非前綴非常重要,否則這是您所需的輸出。 如果是這樣, PrefixMapping#setNsPrefix
需要使用PrefixMapping#setNsPrefix
來設置前綴。 ( Model
實現PrefixMapping
。)
model.setNsPrefix( "", "http://yourontologies.com/thisOntology#" );
你會得到的
<Person rdf:about="Jack">
<salary>2004</salary>
</Person>
當您序列化模型時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.