Skip to content

Commit c44abeb

Browse files
committed
Add convertUserProfileToTurtle
1 parent 96ffece commit c44abeb

File tree

4 files changed

+46
-5
lines changed

4 files changed

+46
-5
lines changed

dev/dev.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { fileURLToPath } from "url"
44
import fs, { promises as fsPromise } from "fs"
55
import { validateAll, validateOne, validateUserProfile } from "../src/index.js"
66
import {
7+
convertUserProfileToTurtle,
78
extractDatafieldsMetadata,
89
extractRequirementProfilesMetadata,
910
runSparqlConstructQueryOnRdfString,
@@ -114,10 +115,23 @@ async function devExtractMedatada() {
114115
console.log("Datafields metadata:", await extractDatafieldsMetadata(await fsPromise.readFile(DATAFIELDS, "utf8")))
115116
}
116117

118+
async function devConvertUserProfileToTurtle() {
119+
let userProfileJsonArrayStr = JSON.stringify({
120+
triples: [{
121+
subject: "https://foerderfunke.org/default#mainPerson",
122+
predicate: "https://foerderfunke.org/default#hasResidence",
123+
object: "Berlin"
124+
}]
125+
})
126+
let turtleStr = await convertUserProfileToTurtle(JSON.parse(userProfileJsonArrayStr))
127+
console.log(turtleStr)
128+
}
129+
117130
// devRunSparqlSelectQueryOnRdfString()
118131
// devRunSparqlConstructQueryOnRdfString()
119-
devValidateAll()
132+
// devValidateAll()
120133
// devValidateOne()
121134
// devValidateOneStrings()
122135
// devValidateUserProfile()
123136
// devExtractMedatada()
137+
devConvertUserProfileToTurtle()

global.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import {
99
rdfStringsToStore,
1010
runSparqlSelectQueryOnStore,
1111
extractRequirementProfilesMetadata,
12-
extractDatafieldsMetadata
12+
extractDatafieldsMetadata,
13+
convertUserProfileToTurtle
1314
} from "./src/utils.js";
1415

1516
window.MatchingEngine = {
@@ -20,5 +21,6 @@ window.MatchingEngine = {
2021
rdfStringsToStore,
2122
runSparqlSelectQueryOnStore,
2223
extractRequirementProfilesMetadata,
23-
extractDatafieldsMetadata
24+
extractDatafieldsMetadata,
25+
convertUserProfileToTurtle
2426
}

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@foerderfunke/matching-engine",
3-
"version": "0.4.0",
3+
"version": "0.4.1",
44
"description": "Checks eligibilities by validating a user profile against requirement profiles",
55
"author": "@foerderfunke",
66
"license": "MIT",

src/utils.js

+26-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { Store, Parser as N3Parser, Writer as N3Writer } from "n3"
1+
import { Store, Parser as N3Parser, Writer as N3Writer, DataFactory } from "n3"
2+
const { namedNode, literal } = DataFactory
23
import SparqlParser from "sparqljs"
34
import Validator from "shacl-engine/Validator.js"
45
import rdf from "rdf-ext"
@@ -170,3 +171,27 @@ export async function extractDatafieldsMetadata(datafieldsStr) {
170171
}
171172
return metadata
172173
}
174+
175+
export async function convertUserProfileToTurtle(userProfileJsonArray) {
176+
const writer = new N3Writer({ prefixes: {
177+
ff: "https://foerderfunke.org/default#"
178+
}})
179+
writer.addQuad(
180+
namedNode("https://foerderfunke.org/default#mainPerson"),
181+
namedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
182+
namedNode("https://foerderfunke.org/default#Citizen")
183+
)
184+
for (let triple of userProfileJsonArray.triples) {
185+
writer.addQuad(
186+
namedNode(triple.subject),
187+
namedNode(triple.predicate),
188+
triple.object.startsWith("http") ? namedNode(triple.object) : literal(triple.object)
189+
)
190+
}
191+
return new Promise((resolve, reject) => {
192+
writer.end((error, result) => {
193+
if (error) reject(error)
194+
else resolve(result)
195+
})
196+
})
197+
}

0 commit comments

Comments
 (0)