wikidata-jskos
Version:
Access Wikidata in JSKOS format
43 lines (37 loc) • 1.16 kB
JavaScript
import { ConceptScheme } from "jskos-tools"
import { mappingTypes } from "./types.js"
/**
* JSKOS Concept Scheme with a Wikidata property for authority control.
*/
export default class WikidataConceptScheme extends ConceptScheme {
/**
* Extract JSKOS mappings for this Concept Scheme.
*/
mapPropertyClaims (claims) {
return claims
.filter(claim => claim.mainsnak.snaktype === "value")
.map(claim => {
const { mainsnak, qualifiers } = claim
const id = mainsnak.datavalue.value
const concept = {
uri: this.uriFromNotation(id),
notation: [id],
}
if (!concept.uri) {
return
}
const mapping = {
uri: "http://www.wikidata.org/entity/statement/" + claim.id.replace("$", "-"),
to: { memberSet: [ concept ] },
}
if (qualifiers && qualifiers.P4390) {
// just take the first qualifier
const type = mappingTypes[qualifiers.P4390[0].datavalue.value.id]
if (type) {
mapping.type = [type]
}
}
return mapping
}).filter(defined => defined)
}
}