在 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 中根本没有太多的概念层次结构。这能解释为什么你以前没有得到你想要的结果吗?