作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Apache Jena 的 API,其中由于 unionOf 和 intersectionOf,图表也包含一些匿名/空白节点。这样的例子之一是:
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.summyUrl.com/something#Entity1"/>
<rdf:Description rdf:about="http://www.summyUrl.com/something#Entity2"/>
</owl:unionOf>
</owl:Class>
这是一个匿名节点/资源。当我尝试获取其 URI 时,它类似于:
"-50a5734d:15d839467d9:-1b8b"
我既无法使用此类 URI 执行 SPARQL 查询(由于解析此类 URI 时出现异常),也无法找到合适的 Jena 方法来处理它。
我正在寻找一种方法来分解这些节点并获取它的所有嵌套资源。
例如在下面的例子中,它应该返回 <http:/.../Entity1>
, <http:/.../Entity2>
和 <http:/.../Entity3>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.summyUrl.com/something#Entity1"/>
<owl:unionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.summyUrl.com/something#Entity2"/>
<rdf:Description rdf:about="http://www.summyUrl.com/something#Entity3"/>
</owl:unionOf>
</owl:unionOf>
</owl:Class>
Jena 有没有内置的方法来处理它?</p>
如果没有,我怎样才能有效地做到这一点?
最佳答案
我试过这样做,效果很好:
/**
* Explodes <b>Anonymous resource</b> (Collection resource) in recursive way and provides
* nested resources. Mainly considers <code>owl:unionOf</code>, <code>owl:intersactionOf</code>, <code>rdf:first</code> and <code>rdf:rest</code>
* while traversing.
*
* @param resource
* @return LinkedList<Resource>
*/
private List<Resource> explodeAnonymousResource(Resource resource)
{
private static List<Property> collectionProperties = new LinkedList<Property>(Arrays.asList(OWL.unionOf,OWL.intersectionOf,RDF.first,RDF.rest));
List<Resource> resources=new LinkedList<Resource>();
Boolean needToTraverseNext=false;
if(resource.isAnon())
{
for(Property cp:collectionProperties)
{
if(resource.hasProperty(cp) && !resource.getPropertyResourceValue(cp).equals(RDF.nil))
{
Resource nextResource=resource.getPropertyResourceValue(cp);
resources.addAll(explodeAnonymousResource(nextResource));
needToTraverseNext=true;
}
}
if(!needToTraverseNext)
{
resources.add(resource);
}
}
else
{
resources.add(resource);
}
return resources;
}
关于java - 遍历耶拿中的匿名/空白节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45364725/
另请参阅:Is this a good substr() for C? strtok() 和 friend 跳过空字段,我不知道如何告诉它在这种情况下不要跳过而是返回空。 我能看到的大多数分词器都有
这个问题在这里已经有了答案: What is a NullPointerException, and how do I fix it? (12 个答案) 关闭 6 年前。 编辑:排序。解决方案见底部
我是一名优秀的程序员,十分优秀!