早上好,
我目前正在为我制作的本体开发一个查看器。我想根据它们的类型着色元素(OntPropery,ObjectProperty,Individuals,...)。 我的想法是实现这个:
public Paint transform(RDFNode i) {
if(OntProperty) return Color.RED;
if(ObjectProperty) return Color.BLUE;
if(Individuals) return Color.GREEN;
return Color.GRAY;
}
我使用JenaJung库。
问题是我找不到ifs的正确条件。有人有想法吗?
所有人都是。
答案 0 :(得分:1)
这是我找到的解决方案!
@Override
public Paint transform(RDFNode i) {
OntModel model = (OntModel) i.getModel();
Collection classes = JenaJungGraph.asCollection(model.listClasses());
if(classes.stream().anyMatch(x -> x.toString() == i.asResource().toString())) return ontPropertyColor;
return Color.GRAY;
}
等等,对于其他元素。
希望能帮助别人!
asCollection()
函数用于将Iterator形成Collection
static <T> Collection<T> asCollection(final ClosableIterator<? extends T> it) {
Collection<T> toReturn = new HashSet<>();
while (it.hasNext())
if(true)
toReturn.add((T) it.next());
it.close();
return toReturn;
}