added indexing of collection data with dedicated query
This commit is contained in:
parent
06995feefa
commit
42c3f5e885
|
@ -360,6 +360,10 @@ public class GraphDBClient {
|
||||||
final ClassPathResource queryTemplateResource = new ClassPathResource("eu/dnetlib/ariadneplus/sparql/read_record_data_template.sparql");
|
final ClassPathResource queryTemplateResource = new ClassPathResource("eu/dnetlib/ariadneplus/sparql/read_record_data_template.sparql");
|
||||||
String queryTemplate = IOUtils.toString(queryTemplateResource.getInputStream(), StandardCharsets.UTF_8.name());
|
String queryTemplate = IOUtils.toString(queryTemplateResource.getInputStream(), StandardCharsets.UTF_8.name());
|
||||||
runSPQRLQuery.executeMultipleQueryGraph(queryTemplate, recordIds, datasource, collectionId);
|
runSPQRLQuery.executeMultipleQueryGraph(queryTemplate, recordIds, datasource, collectionId);
|
||||||
|
// List<String> collectionResourceId = runSPQRLQuery.selectCollectionId(datasource, collectionId);
|
||||||
|
// final ClassPathResource selectCollectionTemplateRes = new ClassPathResource("eu/dnetlib/ariadneplus/sparql/read_collection_data_template.sparql");
|
||||||
|
// String selectCollectionTemplate = IOUtils.toString(selectCollectionTemplateRes.getInputStream(), StandardCharsets.UTF_8.name());
|
||||||
|
// runSPQRLQuery.executeMultipleQueryGraph(selectCollectionTemplate, collectionResourceId, datasource, collectionId);
|
||||||
}catch(Throwable e){
|
}catch(Throwable e){
|
||||||
log.error(e);
|
log.error(e);
|
||||||
throw new AriadnePlusPublisherException(e);
|
throw new AriadnePlusPublisherException(e);
|
||||||
|
|
|
@ -161,7 +161,7 @@ public class RunSPARQLQueryService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> selectRecordIds(String datasource, String collectionId){
|
public List<String> selectRecordIds(String datasource, String collectionId){
|
||||||
log.debug("Retrieving recordIds from GraphDB ...");
|
log.debug("Retrieving record Ids from GraphDB ...");
|
||||||
String queryTemplate = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
|
String queryTemplate = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
|
||||||
"select * \n" +
|
"select * \n" +
|
||||||
"from <https://ariadne-infrastructure.eu/api_________::ariadne_plus::%datasource::%collectionId>\n" +
|
"from <https://ariadne-infrastructure.eu/api_________::ariadne_plus::%datasource::%collectionId>\n" +
|
||||||
|
@ -169,9 +169,25 @@ public class RunSPARQLQueryService {
|
||||||
"\t?recordId rdf:type <https://www.ariadne-infrastructure.eu/resource/ao/cat/1.1/AO_Individual_Data_Resource> .\n" +
|
"\t?recordId rdf:type <https://www.ariadne-infrastructure.eu/resource/ao/cat/1.1/AO_Individual_Data_Resource> .\n" +
|
||||||
"} \n";
|
"} \n";
|
||||||
String query = queryTemplate.replaceAll("%datasource", datasource).replaceAll("%collectionId", collectionId);
|
String query = queryTemplate.replaceAll("%datasource", datasource).replaceAll("%collectionId", collectionId);
|
||||||
|
return executeSelect(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> selectCollectionId(String datasource, String collectionId){
|
||||||
|
log.debug("Retrieving collection Id from GraphDB ...");
|
||||||
|
String queryTemplate = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
|
||||||
|
"select * \n" +
|
||||||
|
"from <https://ariadne-infrastructure.eu/api_________::ariadne_plus::%datasource::%collectionId>\n" +
|
||||||
|
"where { \n" +
|
||||||
|
"\t?recordId rdf:type <https://www.ariadne-infrastructure.eu/resource/ao/cat/1.1/AO_Collection> .\n" +
|
||||||
|
"} \n";
|
||||||
|
String query = queryTemplate.replaceAll("%datasource", datasource).replaceAll("%collectionId", collectionId);
|
||||||
|
return executeSelect(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> executeSelect(String query){
|
||||||
openConnection();
|
openConnection();
|
||||||
String jsonRecord = null;
|
String jsonRecord = null;
|
||||||
List<String> recordIds = new ArrayList<>();
|
List<String> results = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
log.debug("Started at: "+Calendar.getInstance().getTime().toString());
|
log.debug("Started at: "+Calendar.getInstance().getTime().toString());
|
||||||
TupleQuery selectQuery = connection.prepareTupleQuery(QueryLanguage.SPARQL, query);
|
TupleQuery selectQuery = connection.prepareTupleQuery(QueryLanguage.SPARQL, query);
|
||||||
|
@ -180,16 +196,16 @@ public class RunSPARQLQueryService {
|
||||||
while (selectQueryResult.hasNext()) {
|
while (selectQueryResult.hasNext()) {
|
||||||
BindingSet recordSet = selectQueryResult.next();
|
BindingSet recordSet = selectQueryResult.next();
|
||||||
org.eclipse.rdf4j.model.Value recordIdValue = recordSet.getValue("recordId");
|
org.eclipse.rdf4j.model.Value recordIdValue = recordSet.getValue("recordId");
|
||||||
recordIds.add(recordIdValue.stringValue());
|
results.add(recordIdValue.stringValue());
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
log.debug("Total recordIds retrieved: "+counter);
|
log.debug("Total records retrieved: "+counter);
|
||||||
log.debug("Finished at: "+Calendar.getInstance().getTime().toString());
|
log.debug("Finished at: "+Calendar.getInstance().getTime().toString());
|
||||||
} catch(Exception e){
|
} catch(Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} finally{
|
} finally{
|
||||||
closeConnection();
|
closeConnection();
|
||||||
}
|
}
|
||||||
return recordIds;
|
return results;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
PREFIX aocat: <https://www.ariadne-infrastructure.eu/resource/ao/cat/1.1/>
|
||||||
|
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||||
|
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||||
|
PREFIX aoprop: <https://www.ariadne-infrastructure.eu/property/>
|
||||||
|
PREFIX onto: <http://www.ontotext.com/>
|
||||||
|
PREFIX ariadneplus: <https://ariadne-infrastructure.eu/aocat/>
|
||||||
|
PREFIX time: <http://www.w3.org/2006/time#>
|
||||||
|
|
||||||
|
CONSTRUCT {
|
||||||
|
%record aoprop:identifier %record .
|
||||||
|
%record aoprop:originalId ?originalId .
|
||||||
|
%record aoprop:issued ?issued .
|
||||||
|
%record aoprop:modified ?modified .
|
||||||
|
%record aoprop:partOf ?partOf .
|
||||||
|
%record aoprop:creator ?creator .
|
||||||
|
?creator aoprop:name ?creatorName .
|
||||||
|
?creator aoprop:email ?creatorEmail .
|
||||||
|
%record aoprop:contributor ?contributor .
|
||||||
|
?contributor aoprop:name ?contributorName .
|
||||||
|
?contributor aoprop:email ?contributorEmail .
|
||||||
|
%record aoprop:legalResponsible ?legalResponsible .
|
||||||
|
?legalResponsible aoprop:name ?legalResponsibleName .
|
||||||
|
?legalResponsible aoprop:email ?legalResponsibleEmail .
|
||||||
|
%record aoprop:owner ?owner .
|
||||||
|
?owner aoprop:name ?ownerName .
|
||||||
|
?owner aoprop:email ?ownerEmail .
|
||||||
|
%record aoprop:publisher ?publisher .
|
||||||
|
?publisher aoprop:name ?publisherName .
|
||||||
|
?publisher aoprop:email ?publisherEmail .
|
||||||
|
%record aoprop:accessPolicy ?accessPolicy .
|
||||||
|
%record aoprop:accessRights ?accessRights .
|
||||||
|
%record aoprop:landingPage ?landingPage .
|
||||||
|
%record aoprop:spatialRegion ?spatialRegion .
|
||||||
|
?spatialRegion aoprop:placeName ?spatialPlaceName .
|
||||||
|
?spatialRegion aoprop:spatialCoordinateSystem ?spatialCoordinateSystem .
|
||||||
|
%record aoprop:spatialRegionPoint ?spatialRegionPoint .
|
||||||
|
?spatialRegionPoint aoprop:lat ?spatialLocationLat .
|
||||||
|
?spatialRegionPoint aoprop:lon ?spatialLocationLon .
|
||||||
|
%record aoprop:spatialRegionBox ?spatialRegionBox .
|
||||||
|
?spatialRegionBox aoprop:boxMaxLat ?spatialLocationBBMaxLat .
|
||||||
|
?spatialRegionBox aoprop:boxMaxLon ?spatialLocationBBMaxLon .
|
||||||
|
?spatialRegionBox aoprop:boxMinLat ?spatialLocationBBMinLat .
|
||||||
|
?spatialRegionBox aoprop:boxMinLon ?spatialLocationBBMinLon .
|
||||||
|
%record aoprop:uri ?temporal .
|
||||||
|
?temporal aoprop:periodName ?temporalPeriodName .
|
||||||
|
?temporal aoprop:from ?temporalFrom .
|
||||||
|
?temporal aoprop:until ?temporalUntil .
|
||||||
|
%record aoprop:uri ?temporalNative .
|
||||||
|
?temporalNative aoprop:periodName ?temporalNativePeriodName .
|
||||||
|
%record aoprop:archeologicalResourceType ?archeologicalResourceType .
|
||||||
|
?archeologicalResourceType aoprop:name ?archeologicalResourceTypeName .
|
||||||
|
%record aoprop:resourceType ?resourceType .
|
||||||
|
%record aoprop:nativeSubject ?nativeSubject .
|
||||||
|
?nativeSubject aoprop:prefLabel ?nativeSubjectPrefLabel .
|
||||||
|
?nativeSubject aoprop:rdfAbout ?nativeSubject .
|
||||||
|
%record aoprop:derivedSubject ?derivedSubject .
|
||||||
|
?derivedSubject aoprop:prefLabel ?derivedSubjectPrefLabel .
|
||||||
|
?derivedSubject aoprop:source "Getty AAT" .
|
||||||
|
%record aoprop:aatSubjects ?derivedSubject .
|
||||||
|
?derivedSubject aoprop:id ?derivedSubject .
|
||||||
|
?derivedSubject aoprop:label ?derivedSubjectPrefLabel .
|
||||||
|
?derivedSubject aoprop:lang ?aatSubjectsLang .
|
||||||
|
%record aoprop:title ?title .
|
||||||
|
%record aoprop:description ?description .
|
||||||
|
%record aoprop:language ?language .
|
||||||
|
}
|
||||||
|
from <https://ariadne-infrastructure.eu/api_________::ariadne_plus::%datasource::aat>
|
||||||
|
from <https://ariadne-infrastructure.eu/ariadneplus::%datasource::aatplus>
|
||||||
|
from <https://ariadne-infrastructure.eu/ariadneplus::%datasource::periodo>
|
||||||
|
from <https://ariadne-infrastructure.eu/ariadneplus::%datasource::periodoplus>
|
||||||
|
from <https://ariadne-infrastructure.eu/api_________::ariadne_plus::%datasource::%collectionId>
|
||||||
|
where {
|
||||||
|
%record aocat:has_language / skos:prefLabel ?language .
|
||||||
|
%record aocat:has_original_id ?originalId .
|
||||||
|
%record aocat:has_creator ?creator .
|
||||||
|
?creator aocat:has_name ?creatorName .
|
||||||
|
%record aocat:has_title ?title .
|
||||||
|
%record aocat:has_type / skos:prefLabel ?resourceType .
|
||||||
|
optional {
|
||||||
|
?creator aocat:has_email ?creatorEmail .
|
||||||
|
}
|
||||||
|
optional {
|
||||||
|
%record aocat:has_description ?description .
|
||||||
|
}
|
||||||
|
optional {
|
||||||
|
%record aocat:has_access_policy / rdfs:label ?accessPolicy .
|
||||||
|
}
|
||||||
|
optional {
|
||||||
|
%record aocat:has_landing_page / rdfs:label ?landingPage .
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
select *
|
||||||
|
where {
|
||||||
|
%record aocat:was_issued ?issued .
|
||||||
|
%record aocat:was_modified ?modified .
|
||||||
|
%record aocat:has_contributor ?contributor .
|
||||||
|
?contributor aocat:has_name ?contributorName .
|
||||||
|
%record aocat:has_responsible ?legalResponsible .
|
||||||
|
?legalResponsible aocat:has_name ?legalResponsibleName .
|
||||||
|
%record aocat:has_owner ?owner .
|
||||||
|
?owner aocat:has_name ?ownerName .
|
||||||
|
%record aocat:has_publisher ?publisher .
|
||||||
|
?publisher aocat:has_name ?publisherName .
|
||||||
|
%record aocat:has_access_rights ?accessRights .
|
||||||
|
%record aocat:has_ARIADNE_subject ?archeologicalResourceType .
|
||||||
|
?archeologicalResourceType skos:prefLabel ?archeologicalResourceTypeName .
|
||||||
|
optional {
|
||||||
|
?contributor aocat:has_email ?contributorEmail .
|
||||||
|
}
|
||||||
|
optional {
|
||||||
|
?legalResponsible aocat:has_email ?legalResponsibleEmail .
|
||||||
|
}
|
||||||
|
optional {
|
||||||
|
?owner aocat:has_email ?ownerEmail .
|
||||||
|
}
|
||||||
|
optional {
|
||||||
|
?publisher aocat:has_email ?publisherEmail .
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BIND (lang(?derivedSubjectPrefLabel) as ?aatSubjectsLang)
|
||||||
|
}
|
Loading…
Reference in New Issue