2013-06-19 59 views
0

我正在使用pOWL構建OWL文件的內容管理系統。我希望能夠query OWL文件以及添加新的實例和類。但是我卡住了。我需要使用pOWL將OWL文件加載到OWLModel中。所以,我想:錯誤:調用非對象的成員函數startTrans()

$base="wine.owl"; 
$store = new DefaultPOWLStore(ADODB_DB_DRIVER, "localhost", "powl", "root", "password"); 

$model = ModelFactory::getOntModel('DBModel','RDFS_VOCABULARY', $base); 
$model = new OWLModel($store, $base); 
$model->load('wine.owl'); 

$model -> __construct($store, $base); 

但我得到的錯誤:

Fatal error: Call to a member function startTrans() on a non-object in C:\Users\xxx\xxx\powl\rdfapi-php\api\model\DbModel.php on line 878 

與錯誤代碼是:

if (is_a($model, 'MemModel')) { 
      if (is_object($model)){ 
      echo "<pre>"; 
      print_r("!!!!!!!"); 
      echo "</pre>"; 
     } 

     $this->dbConn->startTrans(); 

我添加第二個,如果試圖條款檢查如果$model是一個對象,並且它通過了該子句。但我不確定這是否是檢查變量是否爲對象的正確方法。

更新:該問題似乎與dbConn變量,需要找到一種方法來加載模型到數據庫dbConn待定義。明天看看。

+0

我不認爲這是說'$模型'不是一個對象,但'$ this-> dbConn'不是一個對象。如果'$ this-> dbConn'是一個對象,那麼'$ this-> dbConn-> startTrans();'會調用它的成員函數,但它不是,所以代碼在調用成員函數時失敗startTrans()在非對象上。 –

+0

嗨,約書亞,感謝您的評論,我必須在字面意義上與您同時認識到這一點。我將在明天再次研究並進一步更新。留意它,因爲我可能需要你的幫助! – rumplestilskin

回答

0

解決了這個問題,因爲我試圖將OWL文件加載到模型中。我應該使用$store加載文件。這裏是代碼:

$modelURI = "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#"; 
$base="wine.owl"; 
$filename ="wine.owl"; 
$store = new DefaultPOWLStore(ADODB_DB_DRIVER, "localhost", "powl", "root", "password"); 

if(!$store->modelExists($modelURI)) { 
    $store->loadModel($modelURI, $base); 
} 

$model = new OWLModel($store, $modelURI); 
$store-> putModel($store, $modelURI); 
相關問題