wiki-entity
Version:
Wiki entity fetcher
63 lines (62 loc) • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getEntityType = void 0;
const simpleEntity_1 = require("./simpleEntity");
const TYPES_MAP = {
'dbo:FictionalCharacter': simpleEntity_1.SimpleEntityType.WORK,
'wikidata:Q95074': simpleEntity_1.SimpleEntityType.WORK,
'dbo:Book': simpleEntity_1.SimpleEntityType.WORK,
'wikidata:Q571': simpleEntity_1.SimpleEntityType.WORK,
'dbo:PopulatedPlace': simpleEntity_1.SimpleEntityType.PLACE,
'dbo:Place': simpleEntity_1.SimpleEntityType.PLACE,
'schema:Place': simpleEntity_1.SimpleEntityType.PLACE,
'schema:City': simpleEntity_1.SimpleEntityType.PLACE,
'dbo:Location': simpleEntity_1.SimpleEntityType.PLACE,
'wikidata:Q515': simpleEntity_1.SimpleEntityType.PLACE,
'wikidata:Q486972': simpleEntity_1.SimpleEntityType.PLACE,
'dbo:Company': simpleEntity_1.SimpleEntityType.ORG,
'schema:Organization': simpleEntity_1.SimpleEntityType.ORG,
'dbo:Organisation': simpleEntity_1.SimpleEntityType.ORG,
'wikidata:Q43229': simpleEntity_1.SimpleEntityType.ORG,
'schema:Person': simpleEntity_1.SimpleEntityType.PERSON,
'wikidata:Q215627': simpleEntity_1.SimpleEntityType.PERSON,
'dul:NaturalPerson': simpleEntity_1.SimpleEntityType.PERSON,
'wikidata:Q5': simpleEntity_1.SimpleEntityType.PERSON,
'foaf:Person': simpleEntity_1.SimpleEntityType.PERSON,
'dbo:Person': simpleEntity_1.SimpleEntityType.PERSON,
'wikidata:Q1656682': simpleEntity_1.SimpleEntityType.EVENT,
'dul:Event': simpleEntity_1.SimpleEntityType.EVENT,
'schema:Event': simpleEntity_1.SimpleEntityType.EVENT,
'dbo:Event': simpleEntity_1.SimpleEntityType.EVENT,
'dbo:Software': simpleEntity_1.SimpleEntityType.PRODUCT,
'wikidata:Q7397': simpleEntity_1.SimpleEntityType.PRODUCT,
};
const TYPES_NAME_MAP = Object.keys(TYPES_MAP)
.reduce((map, name) => {
const type = TYPES_MAP[name];
map[type] = map[type] || [];
map[type].push(name);
return map;
}, {});
function getEntityType(wikiEntity) {
if (!wikiEntity.types) {
return null;
}
if (containsType(wikiEntity.types, simpleEntity_1.SimpleEntityType.ORG) && containsType(wikiEntity.types, simpleEntity_1.SimpleEntityType.PERSON)) {
return simpleEntity_1.SimpleEntityType.ORG;
}
for (var i = 0; i < wikiEntity.types.length; i++) {
if (TYPES_MAP[wikiEntity.types[i]]) {
return TYPES_MAP[wikiEntity.types[i]];
}
}
}
exports.getEntityType = getEntityType;
function containsType(types, type) {
for (const typeName of types) {
if (~TYPES_NAME_MAP[type].indexOf(typeName)) {
return true;
}
}
return false;
}