我正在研究从系统读取数据的大型复杂软件,并将其中的部分内容存储在Apache Jena Model
/ DataSet
中。一切都运行正常,除了一件小事:尝试添加' hasPart'模型中两个实体之间的关系永远不会被应用。
即。当我调试代码时,我可以看到log4j报告的错误似乎表明交易没有激活。
那么,对于我的问题:可能导致这种情况的是什么,打开的交易没有激活?
在添加属性之前,这条线似乎很混乱了。正在开始交易(begin(ReadWrite.WRITE)
上的DataSet
))。没有异常被抛出,只是控制台上的log4j记录错误消息。
不幸的是,目前我无法生成一个能及时证明问题的最小代码。所以我的问题更多的是自然,如果某种善良的灵魂有指针或理论解释 - 它将是最有用的。任何指针或解释都会受到很大的影响。
答案 0 :(得分:3)
不幸的是,如果您不提供日志跟踪或代码片段(不必直接执行,但MWE有帮助),SO社区可以提供帮助。
首先,您应该使用DCMI hasPart
term来表示hasPart
关系。
我建议您在保存之前check all Model statements。之后make sure you are in a Transaction。
如果这对您有所帮助,请正确更新问题,以便这可以成为真实问题的答案,而不仅仅是对问题的模糊描述。
答案 1 :(得分:1)
事实证明,从Dataset
中提取资源并使用该引用(代码持有对首先创建的实例的引用)添加属性(hasPart)证明可以按预期工作。日志框架未报告任何错误,并且hasPart属性已就绪。
受影响的资源位于Dataset
的默认图表中。
观察:使用getResource(uri)
会返回资源,但它似乎是副本(?),因为实例ID:s不同。
感谢berezovskiy帮助解决这方面的细节。