rdf4jでモデルをrdf:id
でフィルタリングすることはできますか?私はすでに、次のアプローチを試みた:rdf4jフィルタモデル:rdf:id
model.filter(res, null, null)
をしかし、これで、私はまた、rdf:resource
とrdf:about
の出現をすべて取得します。現時点では、必要な型(モデルを返す)が出現するたびにモデル全体をフィルタリングします。そして私は、リソースのためにこのモデルをフィルタリングし、このリソースを、私は必要に応じて、モデルの部分のためのモデル全体をフィルタリング:
Model typeModel = model.filter(null, RDF.TYPE, iri);
// the following obj contains only the id (found in an rdf:about or rdf:resource)
// normally I also do some checks before .iterator().next()
Resource res = typeModel.filter((Resource) obj, null, null).subjects().iterator().next();
Model resModel = model.filter(res, null, null);
私もそれぞれのtypeModel
が必要になりますので、私は私の解決策があまりにも多くのオーバーヘッドを作成し、考えますタイプ。 rdf:id
のモデルをフィルタリングする別の方法はありますか?
UPDATE:
ここでは簡単な例です:私はTerminal.ConductingEquipment
のrdf:resource
の助けを借りてACLineSegment
を見つける必要があります。
<cim:Terminal rdf:ID="_8fd6a918-5a8d-42f2-ae19-3ee77bc76911">
<cim:ACDCTerminal.sequenceNumber>2</cim:ACDCTerminal.sequenceNumber>
<cim:IdentifiedObject.name>XXXX</cim:IdentifiedObject.name>
<cim:Terminal.ConductingEquipment rdf:resource="#_50c99578-6e17-45e1-a113-a4a28d643b40" />
<cim:Terminal.ConnectivityNode rdf:resource="#_eefd8021-6f56-4154-9b2b-9e275c0f43d0" />
<cim:Terminal.phases rdf:resource="http://iec.ch/TC57/2013/CIM-schema-cim16#PhaseCode.ABC" />
</cim:Terminal>
<cim:ACLineSegment rdf:ID="_50c99578-6e17-45e1-a113-a4a28d643b40">
<cim:ACLineSegment.b0ch>5.44828e-5</cim:ACLineSegment.b0ch>
<cim:ACLineSegment.bch>5.44828e-5</cim:ACLineSegment.bch>
....
</cim:ACLineSegment>
'rdf:id'はRDFデータモデルの一部ではなく、RDF/XMLシリアル化の一部です。 RDFトリプルの主題でフィルタリングしたいのですが、そうですか?あるいは、全体的な目標は何ですか? – AKSW
サンプルデータ、期待するもの、現在入手しているものを提供することも良いでしょう。 – AKSW
私は質問を更新しました、私はそれが今より明確であることを願っています。 –