Python で、RDF/SKOS 分類法データを概念階層のみを表す辞書に変換するにはどうすればよいですか?
ディクショナリは次の形式である必要があります。
{ 'term1': [ 'term2', 'term3'], 'term3': [{'term4' : ['term5', 'term6']}, 'term6']}
JSON プラグインで RDFLib を使用しようとしましたが、必要な結果が得られませんでした。
Python で、RDF/SKOS 分類法データを概念階層のみを表す辞書に変換するにはどうすればよいですか?
ディクショナリは次の形式である必要があります。
{ 'term1': [ 'term2', 'term3'], 'term3': [{'term4' : ['term5', 'term6']}, 'term6']}
JSON プラグインで RDFLib を使用しようとしましたが、必要な結果が得られませんでした。
私はPythonユーザーではなく、RDFLibを扱ったこともありませんが、SKOS語彙ページからSKOSと語彙を引っ張ってきました。ボキャブラリーにどの概念 (RDFS または OWL クラス) が含まれているのか、またそれらの階層がどのようなものなのかわからなかったので、Jena の ARQ を使用して SPARQL クエリを実行し、クラスとそのサブクラスを選択しました。結果は得られませんでした。(もちろんクラスは定義されていましたが、サブクラスはありませんでした。)次に、SKOS と SKOS-XL の両方の語彙を使用し、クラスとサブクラスだけでなくプロパティとサブプロパティも要求することにしました。これは私が使用した SPARQL クエリです。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?property ?subproperty ?class ?subclass WHERE {
{ ?subclass rdfs:subClassOf ?class }
UNION
{ ?subproperty rdfs:subPropertyOf ?property }
}
ORDER BY ?class ?property
私が得た結果は
-------------------------------------------------------------------------------------------------------------------
| property | subproperty | class | subclass |
===================================================================================================================
| rdfs:label | skos:altLabel | | |
| rdfs:label | skos:hiddenLabel | | |
| rdfs:label | skos:prefLabel | | |
| skos:broader | skos:broadMatch | | |
| skos:broaderTransitive | skos:broader | | |
| skos:closeMatch | skos:exactMatch | | |
| skos:inScheme | skos:topConceptOf | | |
| skos:mappingRelation | skos:broadMatch | | |
| skos:mappingRelation | skos:closeMatch | | |
| skos:mappingRelation | skos:narrowMatch | | |
| skos:mappingRelation | skos:relatedMatch | | |
| skos:narrower | skos:narrowMatch | | |
| skos:narrowerTransitive | skos:narrower | | |
| skos:note | skos:changeNote | | |
| skos:note | skos:definition | | |
| skos:note | skos:editorialNote | | |
| skos:note | skos:example | | |
| skos:note | skos:historyNote | | |
| skos:note | skos:scopeNote | | |
| skos:related | skos:relatedMatch | | |
| skos:semanticRelation | skos:broaderTransitive | | |
| skos:semanticRelation | skos:mappingRelation | | |
| skos:semanticRelation | skos:narrowerTransitive | | |
| skos:semanticRelation | skos:related | | |
| | | _:b0 | <http://www.w3.org/2008/05/skos-xl#Label> |
| | | skos:Collection | skos:OrderedCollection |
-------------------------------------------------------------------------------------------------------------------
SKOSには概念のヒエラルキーがあまりないように見えます。これで、以前に望んでいた結果が得られなかった理由を説明できますか?