UNPKG

wiki-entity

Version:
63 lines (62 loc) 2.77 kB
"use strict"; 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; }