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:archeologicalResourceType ?archeologicalResourceType .   
?archeologicalResourceType aoprop:name ?archeologicalResourceTypeName .   
?record aoprop:resourceType ?resourceType .   
?record aoprop:nativeSubject ?nativeSubject .   
?nativeSubject aoprop:prefLabel ?nativeSubjectPrefLabel .
?nativeSubject aoprop:rdfAbout ?nativeSubject .
?nativeSubject aoprop:aatSubjectsId ?aatSubjectsId .    
?record aoprop:title ?title .      
?record aoprop:description ?description .     
?record aoprop:language ?language .   
}
from  <https://ariadne-infrastructure.eu/api_________::ariadne_plus::ads::aat>
from  <https://ariadne-infrastructure.eu/api_________::ariadne_plus::ads::periodo>
from  <https://ariadne-infrastructure.eu/api_________::ariadne_plus::ads::periodO-En-UK>
from  <https://ariadne-infrastructure.eu/api_________::ariadne_plus::ads::420_event>
where { 	
    	?record	aocat:has_language / skos:prefLabel ?language .
    	?record	aocat:has_original_id ?originalId .
    	?record aocat:is_part_of ?partOf .
    	?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_native_subject ?nativeSubject .
            ?nativeSubject skos:prefLabel ?nativeSubjectPrefLabel .
            optional {
                ?nativeSubject skos:exactMatch ?aatSubjectsId .
            }
        	optional {
                ?nativeSubject skos:closeMatch ?aatSubjectsId .  
            }
    	}
        optional {
            ?record aocat:has_description ?description .
        }
        optional {
            ?record aocat:has_access_policy / rdfs:label ?accessPolicy . 
        }
        optional {
        	?record aocat:has_landing_page / rdfs:label ?landingPage .
        }
        optional {
        	?record aocat:has_temporal_coverage ?temporal .
        	?temporal aocat:has_period / rdfs:label ?temporalPeriodName .
        }
        optional {
        	?record aocat:has_temporal_coverage ?temporal .
            ?temporal aocat:has_native_period ?nativePeriod .
        	?nativePeriod skos:prefLabel ?temporalPeriodName .
        	optional {
            	?nativePeriod skos:exactMatch ?periodORef .
            	?periodORef time:intervalStartedBy ?intervalStartedBy .
            	?intervalStartedBy skos:prefLabel ?temporalFrom .
            	?periodORef time:intervalFinishedBy ?intervalFinishedBy .
            	?intervalFinishedBy skos:prefLabel ?temporalUntil .
            }
        }
    	{    
		select  * 
        where {
            ?record aocat:is_part_of ?collection .
            ?collection aocat:was_issued ?issued .
            ?collection aocat:was_modified ?modified .
            ?collection aocat:has_contributor ?contributor .
            ?contributor aocat:has_name ?contributorName .
            ?collection aocat:has_responsible ?legalResponsible .
            ?legalResponsible aocat:has_name ?legalResponsibleName .
            ?collection aocat:has_owner ?owner .
            ?owner aocat:has_name ?ownerName .
            ?collection aocat:has_publisher ?publisher . 
            ?publisher aocat:has_name ?publisherName .
            ?collection aocat:has_access_rights ?accessRights .
            ?collection  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 .
            }
    	}
    	}
    	{
        select * 
        where {
        	?record	aocat:has_spatial_coverage ?spatialRegion .
            ?spatialRegion  aocat:has_place_name ?spatialPlaceName .
            optional {
                ?spatialRegion aocat:has_coordinate_system ?spatialCoordinateSystem .
            }
            optional {
                ?record	aocat:has_spatial_coverage ?spatialRegionPoint .
                ?spatialRegionPoint aocat:has_latitude ?spatialLocationLat ; 
                		 aocat:has_longitude ?spatialLocationLon . 
            }
            optional {
                ?record	aocat:has_spatial_coverage ?spatialRegionBox .
                ?spatialRegionBox aocat:has_bounding_box_max_lat ?spatialLocationBBMaxLat ; 
                		 aocat:has_bounding_box_max_lon ?spatialLocationBBMaxLon ;
                   		 aocat:has_bounding_box_min_lat ?spatialLocationBBMinLat ;
                      	 aocat:has_bounding_box_min_lon ?spatialLocationBBMinLon ;
            }
            }	
    	}
    
}