0
在Python中,如何將RDF/SKOS分類數據轉換爲僅表示概念層次結構的字典?作爲Python詞典的RDF/SKOS概念層次結構
字典必須有這樣的格式:
{ 'term1': [ 'term2', 'term3'], 'term3': [{'term4' : ['term5', 'term6']}, 'term6']}
我嘗試使用RDFLib使用JSON插件,但沒有得到我想要的結果。
在Python中,如何將RDF/SKOS分類數據轉換爲僅表示概念層次結構的字典?作爲Python詞典的RDF/SKOS概念層次結構
字典必須有這樣的格式:
{ 'term1': [ 'term2', 'term3'], 'term3': [{'term4' : ['term5', 'term6']}, 'term6']}
我嘗試使用RDFLib使用JSON插件,但沒有得到我想要的結果。
我不是一個Python用戶,我沒有使用RDFLib,但我只是從SKOS vocabularies page中提取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很多概念層次不是在所有。這能解釋爲什麼你沒有得到你想要的結果嗎?
你試過什麼「使用帶有JSON插件的RDFLib」?結果不是你想要的結果是什麼? – 2013-05-11 12:46:27
你想要什麼格式?第一個條目看起來像沒有嵌套條目的「class:[direct-subclass-1,direct-subclass-2]」(例如,從第二個條目開始,我們知道term3具有子條目,但它們未列出在第一個條目中,然而,在第二個條目中,term4的條目是嵌套的。你想要的格式是什麼?如果它只是'{subclass_i:[direct-subclass_ij] ...}',那應該不會太難任何可以讓你查詢子類的庫 – 2013-05-11 12:50:01
正如Joshua所說,你需要添加更多的上下文並更精確地定義你的目標,如果你添加了應該轉換成所需格式的SKOS,這將會有所幫助。 – 2013-05-12 18:22:38