耶拿数据集监听器
Jena Dataset Listener
感谢 ModelChangedListener,我可以监控 Model
中的变化,如 Jena 文档 (Event handling in Jena) 中所述。
Model m = ModelFactory.createDefaultModel();
ModelChangedListener L = new MyListener();
m.register(L);
但是,在我的项目中,我想监视 Dataset
在默认图形或 [=14= 的命名图形之一发生某些事情后对 运行 代码的更改].
我想做的只是在针对 Dataset
:
执行此类查询后触发事件
PREFIX d: <http://learningsparql.com/ns/data#>
PREFIX dm: <http://learningsparql.com/ns/demo#>
INSERT DATA
{
d:x dm:tag "one" .
d:x dm:tag "two" .
GRAPH d:g1
{
d:x dm:tag "three" .
d:x dm:tag "four" .
}
}
检测 "one" "two" 被添加到默认图形,"three" "four" 添加到 g1。
使用此代码,我什至无法检测 Dataset
的默认图表中发生的变化,更不用说检测命名图表中的变化了。
Dataset ds = RDFDataMgr.loadDataset(ONTOLOGY_PATH);
Model defaultModel = ds.getDefaultModel();
ModelChangedListener modelChangedListener = new MyListener();
defaultModel.register(modelChangedListener);
看看 DatasetGraphMonitor
,它需要 DatasetChanges
来处理更改。
即使模型有效,聆听模型也是不可靠的,因为更改可能会直接进入数据集。 DatasetFactory.createGeneral
数据应该适用于应用程序添加的模型,但在您的示例中 d:g1
可能无效。您将不得不添加一种创建模型的方法。这个引擎是 DatasetGraphMapLink
.
但是 DatasetGraphMonitor
/ DatasetChanges
更容易。
另一种选择是 RDF Delta,并且 DatasetGraphChanges
更改是通过事务边界交付的。
感谢 ModelChangedListener,我可以监控 Model
中的变化,如 Jena 文档 (Event handling in Jena) 中所述。
Model m = ModelFactory.createDefaultModel();
ModelChangedListener L = new MyListener();
m.register(L);
但是,在我的项目中,我想监视 Dataset
在默认图形或 [=14= 的命名图形之一发生某些事情后对 运行 代码的更改].
我想做的只是在针对 Dataset
:
PREFIX d: <http://learningsparql.com/ns/data#>
PREFIX dm: <http://learningsparql.com/ns/demo#>
INSERT DATA
{
d:x dm:tag "one" .
d:x dm:tag "two" .
GRAPH d:g1
{
d:x dm:tag "three" .
d:x dm:tag "four" .
}
}
检测 "one" "two" 被添加到默认图形,"three" "four" 添加到 g1。
使用此代码,我什至无法检测 Dataset
的默认图表中发生的变化,更不用说检测命名图表中的变化了。
Dataset ds = RDFDataMgr.loadDataset(ONTOLOGY_PATH);
Model defaultModel = ds.getDefaultModel();
ModelChangedListener modelChangedListener = new MyListener();
defaultModel.register(modelChangedListener);
看看 DatasetGraphMonitor
,它需要 DatasetChanges
来处理更改。
即使模型有效,聆听模型也是不可靠的,因为更改可能会直接进入数据集。 DatasetFactory.createGeneral
数据应该适用于应用程序添加的模型,但在您的示例中 d:g1
可能无效。您将不得不添加一种创建模型的方法。这个引擎是 DatasetGraphMapLink
.
但是 DatasetGraphMonitor
/ DatasetChanges
更容易。
另一种选择是 RDF Delta,并且 DatasetGraphChanges
更改是通过事务边界交付的。