Skip to content

Commit

Permalink
case insensitive prefix when filtering records
Browse files Browse the repository at this point in the history
  • Loading branch information
rjawesome committed Aug 3, 2023
1 parent 14b77ab commit aa22e97
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/edge_manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,8 @@ module.exports = class QueryEdgeManager {
_filterEdgeRecords(qEdge) {
let keep = [];
let records = qEdge.records;
let subjectCuries = qEdge.subject.curie;
let objectCuries = qEdge.object.curie;
let subjectCuries = Array.isArray(qEdge.subject.curie) ? qEdge.subject.curie.map(s => s.toLowerCase()) : qEdge.subject.curie.toLowerCase();
let objectCuries = Array.isArray(qEdge.object.curie) ? qEdge.object.curie.map(s => s.toLowerCase()) : qEdge.object.curie.toLowerCase();
debug(
`'${qEdge.getID()}' Reversed[${qEdge.reverse}] (${JSON.stringify(subjectCuries.length || 0)})` +
`--(${JSON.stringify(objectCuries.length || 0)}) entities / (${records.length}) records.`,
Expand All @@ -197,17 +197,17 @@ module.exports = class QueryEdgeManager {
//compare record I/O ids against edge node ids
// #1 check equivalent ids
record.subject.equivalentCuries.forEach((curie) => {
subjectIDs.add(curie);
subjectIDs.add(curie?.toLowerCase());
});
record.object.equivalentCuries.forEach((curie) => {
objectIDs.add(curie);
objectIDs.add(curie?.toLowerCase());
});
// #2 ensure we have the primaryID
subjectIDs.add(record.subject.curie);
objectIDs.add(record.object.curie);
subjectIDs.add(record.subject.curie?.toLowerCase());
objectIDs.add(record.object.curie?.toLowerCase());
// #3 make sure we at least have the original
subjectIDs.add(record.subject.original);
objectIDs.add(record.object.original);
subjectIDs.add(record.subject.original?.toLowerCase());
objectIDs.add(record.object.original?.toLowerCase());
// check ids
subjectMatch = _.intersection([...subjectIDs], execSubjectCuries).length;
objectMatch = _.intersection([...objectIDs], execObjectCuries).length;
Expand Down
12 changes: 12 additions & 0 deletions src/qedge2apiedge.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ module.exports = class QEdge2APIEdgeHandler {
if (entity.primaryTypes.includes(inputType.replace('biolink:', ''))) {
entity.equivalentIDs.forEach((equivalentCurie) => {
if (equivalentCurie.toUpperCase().includes(inputPrefix.toUpperCase())) {
// make sure the case of prefix matches the inputPrefix
equivalentCurie = equivalentCurie.replace(new RegExp(inputPrefix, "i"), inputPrefix);

const id = CURIE_WITH_PREFIXES.includes(equivalentCurie.split(':')[0].toUpperCase())
? [equivalentCurie.split(':')[0].toUpperCase(), ...equivalentCurie.split(':').slice(1)].join(':')
: equivalentCurie.split(':').slice(1).join(':');
Expand Down Expand Up @@ -130,6 +133,9 @@ module.exports = class QEdge2APIEdgeHandler {
} else if (entity.primaryTypes.includes(inputType.replace('biolink:', ''))) {
entity.equivalentIDs.forEach((equivalentCurie) => {
if (equivalentCurie.toUpperCase().includes(inputPrefix.toUpperCase())) {
// make sure the case of prefix matches the inputPrefix
equivalentCurie = equivalentCurie.replace(new RegExp(inputPrefix, "i"), inputPrefix);

const id = CURIE_WITH_PREFIXES.includes(equivalentCurie.split(':')[0].toUpperCase())
? [equivalentCurie.split(':')[0].toUpperCase(), ...equivalentCurie.split(':').slice(1)].join(':')
: equivalentCurie.split(':').slice(1).join(':');
Expand Down Expand Up @@ -185,6 +191,9 @@ module.exports = class QEdge2APIEdgeHandler {
if (entity.primaryTypes.includes(inputType.replace('biolink:', ''))) {
entity.equivalentIDs.forEach((equivalentCurie) => {
if (equivalentCurie.toUpperCase().includes(inputPrefix.toUpperCase())) {
// make sure the case of prefix matches the inputPrefix
equivalentCurie = equivalentCurie.replace(new RegExp(inputPrefix, "i"), inputPrefix);

const id = CURIE_WITH_PREFIXES.includes(equivalentCurie.split(':')[0].toUpperCase())
? [equivalentCurie.split(':')[0].toUpperCase(), ...equivalentCurie.split(':').slice(1)].join(':')
: equivalentCurie.split(':').slice(1).join(':');
Expand Down Expand Up @@ -231,6 +240,9 @@ module.exports = class QEdge2APIEdgeHandler {
} else if (entity.primaryTypes.includes(inputType.replace('biolink:', ''))) {
entity.equivalentIDs.forEach((equivalentCurie) => {
if (equivalentCurie.toUpperCase().includes(inputPrefix.toUpperCase())) {
// make sure the case of prefix matches the inputPrefix
equivalentCurie = equivalentCurie.replace(new RegExp(inputPrefix, "i"), inputPrefix);

const id = CURIE_WITH_PREFIXES.includes(equivalentCurie.split(':')[0].toUpperCase())
? [equivalentCurie.split(':')[0].toUpperCase(), ...equivalentCurie.split(':').slice(1)].join(':')
: equivalentCurie.split(':').slice(1).join(':');
Expand Down

0 comments on commit aa22e97

Please sign in to comment.