我正在与JENA framework
一起抓取有关公共合同的信息并将其发布为RDF,但无法解决以下问题:
创建新的RDF模型时,我为每个合同创建新的Resource
,然后使用JENA的addProperty(Property, RDFNode)
或addProperty(Property, String)
方法分配一堆属性(我抓取的属性)。问题是,有些合同缺少某些属性,所以我得到了NullPointerException
。
使用
if(contract.getProperty() != null)
{
resource.addProperty(VOCABULARY.property, contract.getProperty());
}
对于每个单个属性可能不是最佳方法,因为
addProperty()
方法的第二个参数相差很大(它可以直接是
contract.getProperty()
,但有时也可以是model.createLiteral(contract.getProperty())
或model.createTypedLiteral(contract.getProperty(), XSDDataType.XSDInt)
等),我无法创建自己的myAddProperty()
方法我将在其中检查
null
并致电JENA的addProperty()
。您建议跳过所有null属性的最佳解决方案是什么?
非常感谢您的任何建议。
最佳答案
将空检查重构为单独的方法:
private void addProperty(final Resource resource, final String key, final String value) {
if (value != null) {
resource.addProperty(key, value);
}
}
然后,您可以按以下方式使用此方法:
addProperty(resource, VOCABULARY.property, contract.getProperty());