From ae91617d1bce6e7eb554a0149cfd000f75ad76c0 Mon Sep 17 00:00:00 2001 From: Enrico Ottonello Date: Tue, 11 Feb 2020 12:04:45 +0100 Subject: [PATCH] added optional surrounding union conditions, in case all those conditions do not match any statements --- .../src/main/resources/query.txt | 205 +++++++++++------- 1 file changed, 123 insertions(+), 82 deletions(-) diff --git a/dnet-ariadneplus-graphdb-publisher/src/main/resources/query.txt b/dnet-ariadneplus-graphdb-publisher/src/main/resources/query.txt index 05e0366..c9d1f0f 100644 --- a/dnet-ariadneplus-graphdb-publisher/src/main/resources/query.txt +++ b/dnet-ariadneplus-graphdb-publisher/src/main/resources/query.txt @@ -5,26 +5,26 @@ PREFIX mine: PREFIX onto: CONSTRUCT { - ?record mine:resourcetype "AriadneCatalogEntry" . - ?record mine:identifier ?record . - ?record mine:publisher ?x . - ?x a mine:AgentInfo . - ?x mine:name ?publisherName . - ?x mine:type ?publisherType . - ?archeologicalResourceType a mine:archeologicalResourceType . +?record mine:resourcetype "AriadneCatalogEntry" . +?record mine:identifier ?record . +?record mine:publisher ?x . +?x a mine:AgentInfo . +?x mine:name ?publisherName . +?x mine:type ?publisherType . +?archeologicalResourceType a mine:archeologicalResourceType . ?record mine:archeologicalResourceType ?archeologicalResourceType . ?archeologicalResourceType mine:name ?archeologicalResourceTypeName . ?record mine:issued ?issued . ?record mine:resourceType ?resourceType . ?record mine:modified ?modified . ?record mine:nativeSubject ?ns . - ?ns a mine:NativeSubject . +?ns a mine:NativeSubject . ?ns mine:prefLabel ?nativeSbj . - ?spatial a mine:Spatial . +?spatial a mine:Spatial . ?record mine:spatial ?spatial . ?spatial mine:placeName ?spatialPlaceName . ?spatial mine:location ?blocation . - ?blocation a mine:AriadneGeoPoint . +?blocation a mine:AriadneGeoPoint . ?blocation mine:lat ?spatialLocationLat . ?blocation mine:lon ?spatialLocationLon . ?record mine:accessPolicy ?accessPolicy . @@ -33,74 +33,113 @@ CONSTRUCT { ?record mine:accessRights ?accessRights . ?record mine:description ?description . ?record mine:contributor ?contributor . - ?contributor a mine:AgentInfo . +?contributor a mine:AgentInfo . ?contributor mine:name ?contributorName . ?contributor mine:email ?contributorEmail . ?contributor mine:type ?contributorType . ?record mine:originalId ?originalId . - ?record mine:temporal ?t . - ?t a mine:AriadneTemporal . +?record mine:temporal ?t . +?t a mine:AriadneTemporal . ?t mine:periodName ?temporalPeriodName . ?t mine:from ?from . ?t mine:until ?until . ?record mine:language ?language . ?record mine:partOf ?collection . -} +} #from onto:explain where { -?record aocat:has_title ?title ; -# aocat:has_access_rights ?accessRights ; - aocat:has_creator / aocat:has_name ?contributorName ; - aocat:has_creator / aocat:has_email ?contributorEmail ; - aocat:has_spatial_coverage ?spatial ; - aocat:has_native_subject / skos:prefLabel ?nativeSbj ; - aocat:has_original_id ?originalId ; - aocat:has_language / skos:prefLabel ?language . - { - ?record aocat:has_access_rights ?accessRights . - } - union - { - ?record aocat:has_description ?description . + + graph ?g { + #mandatory statements in our model, to be added in all datasources + #?record aocat:has_title ?title ; + # aocat:has_access_rights ?accessRights ; + # aocat:has_creator / aocat:has_name ?contributorName ; + # aocat:has_creator / aocat:has_email ?contributorEmail ; + # aocat:has_native_subject / skos:prefLabel ?nativeSbj ; + # aocat:has_original_id ?originalId ; + ?record aocat:has_spatial_coverage ?spatial ; + aocat:has_language / skos:prefLabel ?language . + optional { + { + ?record aocat:has_original_id ?originalId . + } + union + { + ?record aocat:has_native_subject / skos:prefLabel ?nativeSbj . + } + union + { + ?record aocat:has_creator / aocat:has_name ?contributorName . + } + union + { + ?record aocat:has_title ?title . + } + union + { + ?record aocat:has_creator / aocat:has_email ?contributorEmail . + } + union + { + ?record aocat:has_access_rights ?accessRights . + } + union + { + ?record aocat:has_description ?description . + } + union + { + ?record aocat:has_access_policy / rdfs:label ?accessPolicy . + } + union + { + ?record aocat:has_landing_page / rdfs:label ?landingPage . + } + union + { + ?record aocat:is_part_of ?collection . + } + union + { + ?record aocat:has_temporal_coverage ?t . + ?t aocat:has_period / skos:prefLabel ?temporalPeriodName . + } + union + { + ?record aocat:has_temporal_coverage ?t . + ?t aocat:from ?from . + } + union + { + ?record aocat:has_temporal_coverage ?t . + ?t aocat:until ?until . + } } - union - { - ?record aocat:has_access_policy / rdfs:label ?accessPolicy . - } - union - { - ?record aocat:has_landing_page / rdfs:label ?landingPage . - } - union - { - ?record aocat:is_part_of ?collection . - } - union - { - ?record aocat:has_temporal_coverage ?t . - ?t aocat:has_period / skos:prefLabel ?temporalPeriodName . - } - union - { - ?record aocat:has_temporal_coverage ?t . - ?t aocat:from ?from . - } - union - { - ?record aocat:has_temporal_coverage ?t . - ?t aocat:until ?until . - } - { select * where { - ?collection aocat:has_publisher / rdfs:label ?publisherName ; - aocat:has_ARIADNE_subject ?archeologicalResourceType ; - aocat:was_issued ?issued ; - aocat:has_type / skos:prefLabel ?type . - ?archeologicalResourceType skos:prefLabel ?archeologicalResourceTypeName . + #mandatory statements in our model, to be added in all datasources + #?collection aocat:has_publisher / rdfs:label ?publisherName ; + # aocat:has_ARIADNE_subject ?archeologicalResourceType ; + # aocat:has_type / skos:prefLabel ?type . + ?collection aocat:was_issued ?issued . + optional { + { + ?collection aocat:has_publisher / rdfs:label ?publisherName . + } + union + { + ?collection aocat:has_ARIADNE_subject ?archeologicalResourceType . + ?archeologicalResourceType skos:prefLabel ?archeologicalResourceTypeName . + } + union + { + ?collection aocat:has_type / skos:prefLabel ?type . + } + } + #?archeologicalResourceType skos:prefLabel ?archeologicalResourceTypeName . } } @@ -108,27 +147,29 @@ where { select * where { ?spatial aocat:has_place_name ?spatialPlaceName . - { - ?spatial aocat:has_latitude ?spatialLocationLat . - BIND(uri(concat('http://www.myprefix/location/', md5(str(?spatialLocationLat)))) as ?blocation) - } - union - { - ?spatial aocat:has_longitude ?spatialLocationLon . - BIND(uri(concat('http://www.myprefix/location/', md5(str(?spatialLocationLon)))) as ?blocation) - } - union - { - ?spatial aocat:has_latitude ?spatialLocationLat ; - aocat:has_longitude ?spatialLocationLon . - BIND(uri(concat('http://www.myprefix/location/', md5(concat(str(?spatialLocationLat), str(?spatialLocationLon))))) as ?blocation) - } - - - } - } - + optional { + { + ?spatial aocat:has_place_name ?spatialPlaceName . + ?spatial aocat:has_latitude ?spatialLocationLat . + BIND(uri(concat('http://www.myprefix/location/', md5(str(?spatialLocationLat)))) as ?blocation) + } + union + { + ?spatial aocat:has_place_name ?spatialPlaceName . + ?spatial aocat:has_longitude ?spatialLocationLon . + BIND(uri(concat('http://www.myprefix/location/', md5(str(?spatialLocationLon)))) as ?blocation) + } + union + { + ?spatial aocat:has_latitude ?spatialLocationLat ; + aocat:has_longitude ?spatialLocationLon . + BIND(uri(concat('http://www.myprefix/location/', md5(concat(str(?spatialLocationLat), str(?spatialLocationLon))))) as ?blocation) + } + } + } + } BIND("organization" as ?contributorType) . BIND("organization" as ?publisherType) . - + + } }