根据前面提出的问题(How can I programmatically compute path length using Jena RDF/Ontology API?)构建,我需要将一个数值(例如3.5)乘以一个特定的类(它的类大小,如前一个问题中所详述)并且能够计算RDF图中的总路径长度。请注意,落在此特定节点下的每个路径都将生成新的路径权重结果。
我尝试做的是创建一个名为nValue
的方法并将classSize
传递给它,然后将此数值变量添加到pathSize
方法中以计算{ {1}},方法如下:
pathLength
然后尝试在public static double nValue (int classWeight, double nv )
{
double numValue = classWeight*nv;
if ( nv < 1 ){
numValue = 1.0;
}
return numValue;
}
方法中调用此方法来徒劳。我的问题是我是耶拿的新手。所以我在RDF图中获取单个类并对其执行乘法并将其与pathSize
计算结合起来时遇到问题。
答案 0 :(得分:0)
上一个问题的答案代码是
public static int classSize( final Resource klass ) {
return klass.getModel().listSubjectsWithProperty( RDFS.subClassOf, klass ).toList().size();
}
public static double pathSize( final List<Resource> path ) {
int prevSize = classSize( path.get( 0 ));
double pathSum = prevSize;
for ( int i = 1; i < path.size(); i++ ) {
int currSize = classSize( path.get( i ));
double linkWeight = currSize < prevSize ? 0.5 : 1.0;
pathSum += linkWeight + currSize;
prevSize = currSize;
}
return pathSum;
}
我不清楚你要做的是什么,但听起来你正试图调整currSize
中某些类的pathSize
(即值由path.get( i )
返回,但你在比较该类是否是应该发生的类之一时遇到了麻烦。如果我理解正确,你可以这样做:
private static Resource specialClass = ResourceFactory.createResource( "http://.../specialClass" );
public static double pathSize( final List<Resource> path ) {
// ...
for ( int i = 1; i < path.size(); i++ ) {
final Resource klass = path.get( i );
int currSize = classSize( klass );
if ( specialClass.equals( klass ) ) { // When klass is specialClass
currSize = ...; // something different // do the additional modification
}
// ...
}
// ...
}