我正在与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属性的最佳解决方案,您会建议什么?
非常感谢任何建议。
答案 0 :(得分:1)
将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());
答案 1 :(得分:0)
我对这些框架并不熟悉,但也许你可以继承Resource
并做这样的事情? :
@overrides
public void addProperty(String key, String value)
{
if (value != null) super.addProperty(key,value);
}