2015-07-20 140 views
1

我有一個本體,我定義了一系列的類,子類和屬性。現在我想自動實例化Python代碼中的本體,並將其保存在RDF/XML中,並將其加載到Protege中。我寫了下面的代碼:如何使用rdflib創建本體?

def instantiating_ontology(rdf_address): 
from rdflib import * 
g = Graph() 
input_RDF = g.parse(rdf_address) 
#input_RDF = g.open(rdf_address, create=False) 
myNamespace="http://www.semanticweb.org/.../ontologies/2015/3/RNO_V5042_RDF" 
rno = Namespace(myNamespace+"#") 
nodeClass = URIRef(rno+"Node") 
arcClass = URIRef(rno+"Arc") 
#owlNamespace = 'http://www.w3.org/2002/07/owl#NamedIndividual' 
namedIndividual = URIRef('http://www.w3.org/2002/07/owl#NamedIndividual') 
rdftype = URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#type") 
for i in range(0,100): 
    individualName = rno + "arc_"+str(arcID) 
    #arc_individual= BNode(individualName) 
    arc_individual = BNode() 
    #g.add() 
    #g.add((arc_individual,rdftype, namedIndividual)) 
    g.add((arc_individual,rdftype, arcClass)) 
    g.add((arc_individual,rdftype, arcClass)) 
    #g.commit() 
output_address ="RNO_V5042_RDF.owl" 
g.serialize(destination = output_address) 

該文件包含加三元到RDF/XML:

<rdf:Description rdf:nodeID="N0009844208f0490887a02160fbbf8b98"> 
<rdf:type rdf:resource="http://www.semanticweb.org/ehsan.abdolmajidi/ontologies/2015/3/RNO_V5042#Arc"/> 

,但是當我在門徒打開該文件不存在用於實例類。

有人可以告訴我,如果我定義的實例的方式是錯誤的或我應該使用不同的標籤?

任何幫助,非常感謝。

回答

2

玩過代碼和結果後,我意識到應該用rdf:about替換rdf:nodeID這個概念。這樣做我只需要改變

for i in range(0,100): 
individualName = rno + "arc_"+str(arcID) 
#arc_individual= BNode(individualName) 
arc_individual = BNode()  #---> remove this one 
arc_individual = URIRef(individualName) #----> add this one 
g.add((arc_individual,rdftype, arcClass)) 
g.add((arc_individual,rdftype, arcClass)) 
arc_individual = URIRef(individualName) 

這似乎很容易,但讓我有一段時間瞭解。我希望這可以幫助別人。 :D