Skip to content

Commit e2ae360

Browse files
authored
Merge pull request #23 from MikiDi/immutable_quads
blank nodes skolemization now works with immutable quads
2 parents 6c34658 + 7112a1c commit e2ae360

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

app.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ const consumerJob = new CronJob(CRON_PATTERN, async () => {
9292
consumer.listen(
9393
async (member) => {
9494
try {
95-
convertBlankNodes(member.quads);
95+
member.quads = convertBlankNodes(member.quads);
9696
await processMember(member, treeProperties);
9797
} catch (e) {
9898
console.error(

utils.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,25 @@ export function fromDate(date: Date): RDF.Literal {
3939

4040
export function convertBlankNodes(quads: RDF.Quad[]) {
4141
const blankNodesMap = new Map<RDF.BlankNode, RDF.NamedNode>();
42-
quads.forEach((quad) => {
42+
return quads.map((quad) => {
4343
if (quad.subject.termType === "BlankNode") {
4444
if (!blankNodesMap.has(quad.subject)) {
4545
blankNodesMap.set(quad.subject, BLANK(uuidv4()));
4646
}
47-
quad.subject = blankNodesMap.get(quad.subject)!;
4847
}
4948
if (quad.object.termType === "BlankNode") {
5049
if (!blankNodesMap.has(quad.object)) {
5150
blankNodesMap.set(quad.object, BLANK(uuidv4()));
5251
}
53-
quad.object = blankNodesMap.get(quad.object)!;
52+
}
53+
if (quad.subject.termType === "BlankNode" || quad.object.termType === "BlankNode") {
54+
const newSubject = blankNodesMap.get(quad.subject) || quad.subject;
55+
const newObject = blankNodesMap.get(quad.object) || quad.object;
56+
return DataFactory.quad(newSubject, quad.predicate, newObject, quad.graph);
57+
} else {
58+
return quad;
5459
}
5560
});
56-
return quads;
5761
}
5862

5963
export function extractVersionTimestamp (member: Member, treeProperties: TreeProperties) : Date | null {

0 commit comments

Comments
 (0)