@rdfjs/score
Version:
Scores RDF/JS terms inside a dataset
37 lines (27 loc) • 807 B
JavaScript
import TupleMap from './lib/TupleMap.js'
function product (list) {
return ({ dataset, graph, terms = [] }) => {
if (list.length === 0) {
return []
}
const results = list[0]({ dataset, graph, terms })
const all = new TupleMap(results.map(result => [[result.term, graph], result]))
for (let i = 1; i < list.length; i++) {
const score = list[i]
const keys = all.keys()
const current = score({ dataset, graph, terms })
for (const result of current) {
const total = all.get([result.term, graph])
if (total) {
total.score *= result.score
}
keys.delete([result.term, graph])
}
for (const key of keys) {
all.delete(key)
}
}
return [...all.values()]
}
}
export default product