如何将JENA OntModel克隆到具有不同ModelSpec的另一个模型

问题描述

我在耶拿有一个带有OWL_MEM_RDFS_INF ModelSpec的OntModel。但是,我创建了一个实用程序来计算模型中的个人,属性等的数量。如here所述,由于我正在使用某些推理能力,因此执行永久正常的<androidx.cardview.widget.CardView android:id="@+id/cardviewClassesBlock1" android:layout_width="330dp" android:layout_height="75dp" android:layout_marginTop="90dp" android:layout_centerHorizontal="true" app:cardCornerRadius="10dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background"> <TextView android:id="@+id/textviewClassesBlock1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:layout_marginTop="3dp" android:textSize="22sp" android:fontFamily="@font/amiko_semibold" android:textColor="@color/white" android:text="Block A"/> <ImageView android:layout_width="60dp" android:layout_height="6dp" android:layout_marginStart="10dp" android:layout_below="@+id/textviewClassesBlock1" android:background="@drawable/rounded_corner_edittext" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true" android:layout_marginEnd="5dp" android:textColor="@color/white" android:text="P - 0 | T - 0 | A - 0"/> </RelativeLayout> </androidx.cardview.widget.CardView> 方法需要花费很多时间。

它得到了进一步的证明,因为如果我使用基本的OWL_MEM ModelSpec,我不会有任何问题。

我尝试通过解释here来克隆模型图并使用另一个ModelSpec:

model.listIndividuals()

但是当我执行 Model copyOfOntModel = ModelFactory.createModelForgraph(model.getGraph()); OntModel newModel = new OntModelImpl(OntModelSpec.OWL_MEM,copyOfOntModel); 方法时,它仍然需要永远的时间。有没有办法克隆模型,但是使用基本的ModelSpec例如?

解决方法

我应用了UniformedUser所说的内容,但是由于getRawModel()方法不是OntModel的结果,我只是这样做了:

  Model _model = model.getRawModel();
  OntModel newModel = new OntModelImpl(OntModelSpec.OWL_MEM,_model);

它就可以了!