Php 错误:对非对象调用成员函数startTrans()

Php 错误:对非对象调用成员函数startTrans(),php,semantic-web,owl,Php,Semantic Web,Owl,我正在使用它构建OWL文件的内容管理系统。我希望能够查询OWL文件以及添加新实例和类。但是我被卡住了。我需要使用pOWL将OWL文件加载到OWLModel中。所以我试着: $base="wine.owl"; $store = new DefaultPOWLStore(ADODB_DB_DRIVER, "localhost", "powl", "root", "password"); $model = ModelFactory::getOntModel('DBModel','RDFS_VOCAB

我正在使用它构建OWL文件的内容管理系统。我希望能够
查询
OWL文件以及添加新实例和类。但是我被卡住了。我需要使用pOWL将OWL文件加载到OWLModel中。所以我试着:

$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);
但我得到了一个错误:

致命错误:在第878行的C:\Users\xxx\xxx\powl\rdfapi php\api\model\DbModel.php中对非对象调用成员函数startTrans()
出现错误的代码是:

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

        $this->dbConn->startTrans();
if(是($model,'MemModel')){
if(is_对象($model)){
回声“;
$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);
打印(“!!!!!!!!!”); 回声“;
$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);
} $this->dbConn->startTrans();
我添加了第二个if子句,试图检查
$model
是否为对象,它传递了该子句。但我不确定这是否是检查变量是否为对象的正确方法


更新:问题似乎与
dbConn
变量有关,需要找到一种方法将模型加载到数据库中,以便定义
dbConn
。明天再看。

在尝试将
OWL
文件加载到模型中时解决了这个问题。我应该使用
$store
加载文件。下面是代码:


我不认为这意味着
$model
不是一个对象,但
$this->dbConn
不是一个对象。如果
$this->dbConn
是一个对象,那么
$this->dbConn->startTrans();
将调用其成员函数,但它不是,因此代码在调用成员函数startTrans()时失败在非对象上。你好,Joshua,谢谢你的评论,我一定和你同时意识到了这一点。我明天会再次处理并进一步更新。请密切关注,因为我可能需要你的帮助!