-
Notifications
You must be signed in to change notification settings - Fork 89
How to write triggers for ARC
semsol edited this page Mar 14, 2011
·
1 revision
The latest versions of ARC can be extended with Trigger classes if those files follow certain conventions, as described on this page:
Name your extension ARC2_MyTriggerTrigger, save it as ARC2_MyTriggerTrigger.php, and place the file in the recently added triggers directory. This will allow ARC to later locate and include your class file.
Triggers have to be explicitly registered/activated via the Store or Endpoint configuration:
...
$config = array(
'store_triggers' => array(
/* register a trigger for INSERTs and LOADs */
'insert' => array('countTriples'),
'load' => array('countTriples'),
),
);
...
$store = ARC2::getStore($config);
...
The class file itself can be an arbitrary PHP class, but you have to define some parent Class (e.g. Class to be able to access ARC functionality).
Below, you see a basic example for an ARC Trigger that counts the triples in a store (e.g. after a LOAD operation).
<?php
/*
class: ARC2 Trigger
version: 2008-02-01
*/
ARC2::inc('Class');
class ARC2_CountTriplesTrigger extends ARC2_Class {
function __construct($a = '', &$caller) {/* caller is a store */
parent::__construct($a, $caller);
}
function ARC2_CountTriplesTrigger($a = '', &$caller) {
$this->__construct($a, $caller);
}
function __init() {
parent::__init();
$this->store = $this->caller;
}
/* */
function go() { /* automatically called by store or endpoint */
$q = 'SELECT COUNT(*) AS ?t_count WHERE { ?s ?p ?o }';
$row = $this->store->query($q, 'row');
/* do something */
...
}
}