![JAR search and dependency download from the Maven repository](/logo.png)
io.bdrc.auth.model.BudaUserInfo Maven / Gradle / Ivy
package io.bdrc.auth.model;
import java.util.HashMap;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.ResIterator;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.ResourceFactory;
import org.apache.jena.rdfconnection.RDFConnection;
import org.apache.jena.rdfconnection.RDFConnectionRemote;
import io.bdrc.auth.AuthProps;
public class BudaUserInfo {
public final static String SKOS_PREF_LABEL = "http://www.w3.org/2004/02/skos/core#prefLabel";
public static final String BDOU_PFX = "http://purl.bdrc.io/ontology/ext/user/";
private static HashMap budaUserByAuth0Id;
private static Model loadModel() {
String fusekiUrl = AuthProps.getProperty("fusekiAuthData");
Model infos = ModelFactory.createDefaultModel();
String query = "construct { " + "?s <" + BDOU_PFX + "hasUserProfile> ?pr. " + "?s <" + SKOS_PREF_LABEL + "> ?label. } " + "where { " + "{ "
+ "?s ?p ?o. ?s a <" + BDOU_PFX + "User>. " + "?s <" + BDOU_PFX + "hasUserProfile> ?pr. " + "?s <" + SKOS_PREF_LABEL + "> ?label. "
+ "}" + "}";
RDFConnection conn = RDFConnectionRemote.create().destination(fusekiUrl).build();
infos = conn.queryConstruct(query);
conn.close();
return infos;
}
public static HashMap getBudaRdfUsers() {
if (budaUserByAuth0Id == null) {
Model m = loadModel();
budaUserByAuth0Id = new HashMap<>();
ResIterator it = m.listSubjects();
Property authId = ResourceFactory.createProperty(BDOU_PFX + "hasUserProfile");
Property lab = ResourceFactory.createProperty(SKOS_PREF_LABEL);
while (it.hasNext()) {
Resource rs = it.next();
String auth0Id = rs.getPropertyResourceValue(authId).getURI();
String key = auth0Id.substring(auth0Id.lastIndexOf("/") + 1);
String label = rs.getProperty(lab).getObject().asLiteral().getString();
budaUserByAuth0Id.put(key, new BudaRdfUser(rs.getURI(), auth0Id, label));
}
}
return budaUserByAuth0Id;
}
public static BudaRdfUser getBudaRdfInfo(String auth0Id) {
return getBudaRdfUsers().get(auth0Id);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy