1

从上一个问题(如何使用 Jena RDF/Ontology API 以编程方式计算路径长度?)构建,我需要将一个数值(例如 3.5)乘以一个特定类(其类大小如上一个问题中所述) 并能够计算 RDF 图中的总路径长度。请注意,落在该特定节点下的每条路径都会产生一个新的路径权重结果。

我试图做的是创建一个调用nValue并传递给它的方法,classSize然后将这个数值变量添加到pathSize计算的pathLength方法中,方法如下:

public static double nValue (int classWeight, double nv )
{
  double numValue = classWeight*nv;
  if ( nv < 1 ){
    numValue = 1.0;
  }
  return numValue;
} 

然后试图在方法中调用这个方法pathSize就徒劳了。我的问题是我是耶拿的新手。因此,我在 RDF 图中获取单个类并对其执行乘法并将其组合到pathLength计算时遇到了问题。

4

1 回答 1

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;
}

我不清楚您要做什么,但听起来您正在尝试调整某些类的currSizein pathSize(即,返回的值 by 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
        }
        // ...
    }
    // ...
}
于 2013-08-13T17:36:27.833 回答