Added JPA Hibernate for PostgreSQL + simple sql to match the model

This commit is contained in:
Katerina 2023-04-11 17:41:01 +03:00
parent 2c5a934b36
commit 63bba067ba
13 changed files with 11412 additions and 3 deletions

13
pom.xml
View File

@ -15,7 +15,7 @@
<parent>
<groupId>eu.dnetlib</groupId>
<artifactId>uoa-spring-boot-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>1.0.0</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -29,6 +29,17 @@
<artifactId>uoa-validator-engine2</artifactId>
<version>0.9.0</version>
</dependency>
<!-- jpa, crud repository -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- PostgreSQL -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -0,0 +1,177 @@
package eu.dnetlib.validatorapi.controllers;
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
import eu.dnetlib.validator2.validation.guideline.Guideline;
import eu.dnetlib.validator2.validation.guideline.openaire.*;
import eu.dnetlib.validatorapi.entities.RuleInfo;
import eu.dnetlib.validatorapi.entities.ValidationJob;
import eu.dnetlib.validatorapi.entities.ValidationJobResult;
import eu.dnetlib.validatorapi.repository.ValidationJobRepository;
import eu.dnetlib.validatorapi.repository.ValidationResultRepository;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.*;
@RestController
@CrossOrigin(origins = "*")
public class ValidationController {
private final Logger log = LogManager.getLogger(this.getClass());
private final ValidationJobRepository validationJobRepository;
private final ValidationResultRepository validationResultRepository;
@Autowired
public ValidationController(ValidationJobRepository validationJobRepository, ValidationResultRepository validationResultRepository) {
this.validationJobRepository = validationJobRepository;
this.validationResultRepository = validationResultRepository;
}
@RequestMapping(value = {"/validateOAIPMH"}, method = RequestMethod.POST)
public void validateOAIPMH(@RequestParam(name = "guidelines") String guidelinesProfileName,
@RequestParam(name = "baseUrl", defaultValue = "localhost") String baseUrl, //not in use now
@RequestParam(name="numberOfRecords", defaultValue = "10") int numberOfRecords, //not in use now
@RequestBody String OAIPMHResponse) {
ValidationJob validationJob = new ValidationJob(baseUrl, numberOfRecords);
List<RuleInfo> resultRules = null;
List<RuleInfo> fairRules = null;
AbstractOpenAireProfile profile = null;
AbstractOpenAireProfile fairProfile = null;
if (guidelinesProfileName.equals("dataArchiveGuidelinesV2Profile")) {
profile = new DataArchiveGuidelinesV2Profile();
fairProfile = new FAIR_Data_GuidelinesProfile();
} else if (guidelinesProfileName.equals("literatureGuidelinesV3Profile")) {
profile = new LiteratureGuidelinesV3Profile();
} else if (guidelinesProfileName.equals("literatureGuidelinesV4Profile")) {
profile = new LiteratureGuidelinesV4Profile();
} else if (guidelinesProfileName.equals("fairDataGuidelinesProfile")) {
fairProfile = new FAIR_Data_GuidelinesProfile();
}
if (profile == null && fairProfile == null) {
log.error("Exception: No valid guidelines");
new Exception("Validation Job stopped unexpectedly. No valid guidelines were provided.");
}
validationJob.guidelines = profile.name();
System.out.println("Initial validation job "+ validationJob + " | " + validationJob.hashCode() + "\n");
validationJobRepository.save(validationJob);
int record = 0;
double resultSum = 0;
try {
List<String> recordXmls = extractRecordXmls(OAIPMHResponse);
List<ValidationJobResult> validationJobResults = new ArrayList<>();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
for (String recordXml : recordXmls) {
Document doc = db.parse(new InputSource(new StringReader(recordXml)));
if(profile != null) {
resultRules = new ArrayList<>();
//what id is that?
XMLApplicationProfile.ValidationResult validationResult = profile.validate("id", doc);
Map<String, Guideline.Result> results = validationResult.results();
for (Map.Entry entry : results.entrySet()) {
ValidationJobResult validationJobResult = new ValidationJobResult();
validationJobResult.validationJobId = validationJob.id;
validationJobResult.ruleName = entry.getKey().toString();
validationJobResult.recordUrl = "localhost://records/record["+record+"]"; // silly id
Guideline.Result engineResult = (Guideline.Result) entry.getValue();
validationJobResult.score = engineResult.score();
validationJobResult.status = engineResult.status().toString();
validationJobResult.internalError = engineResult.internalError();
resultSum += engineResult.score();
validationJobResult.warnings = ((List<String>) engineResult.warnings()).toArray(new String[0]);
validationJobResult.errors = ((List<String>) engineResult.errors()).toArray(new String[0]);
System.out.println(validationJobResult + " | " + validationJobResult.hashCode() + "\n");
validationResultRepository.save(validationJobResult);
validationJobResults.add(validationJobResult);
}
}
record++;
}
validationJob.status = "COMPLETED";
}
catch (Exception e) {
log.error("Validation job stopped unexpectedly.", e.getMessage());
System.out.println("ERROR " + e.getMessage());
validationJob.status = "STOPPED";
} finally {
validationJob.endDate = new Date();
System.out.println("Final validation job "+ validationJob.hashCode());
validationJob.recordsTested = record;
validationJob.score = resultSum / record;
validationJobRepository.save(validationJob);
}
//xmlValidationResponse.setRules(resultRules);
//xmlValidationResponse.setFairRules(fairRules);
}
@RequestMapping(value = {"/getResultsByJobId"}, method = RequestMethod.POST)
public void getJobResults(@RequestParam(name = "jobId") String jobId){
System.out.println(validationResultRepository.getSummarryResult().toString());
}
public List<String> extractRecordXmls(String xml) throws Exception {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new StringReader(xml)));
XPathFactory xfactory = XPathFactory.newInstance();
XPath xpath = xfactory.newXPath();
XPathExpression recordsExpression = xpath.compile("//record");
NodeList recordNodes = (NodeList) recordsExpression.evaluate(doc, XPathConstants.NODESET);
List<String> records = new ArrayList<String>();
for (int i = 0; i < recordNodes.getLength(); ++i) {
Node element = recordNodes.item(i);
StringWriter stringWriter = new StringWriter();
Transformer xform = TransformerFactory.newInstance().newTransformer();
xform.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); // optional
xform.setOutputProperty(OutputKeys.INDENT, "yes"); // optional
xform.transform(new DOMSource(element), new StreamResult(stringWriter));
records.add(stringWriter.toString());
}
return records;
}
}

View File

@ -1,8 +1,6 @@
package eu.dnetlib.validatorapi.entities;
import eu.dnetlib.validator2.engine.Status;
import eu.dnetlib.validator2.validation.guideline.Guideline;
import eu.dnetlib.validator2.validation.guideline.StandardResult;
import java.util.List;

View File

@ -0,0 +1,36 @@
package eu.dnetlib.validatorapi.entities;
import org.springframework.boot.autoconfigure.session.StoreType;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class SummaryResult {
@Id
String rule_name;
long passed_records;
long failed_records;
long errors;
long warnings;
public SummaryResult(String rule_name, long passed_records, long failed_records, long errors, long warnings) {
this.rule_name = rule_name;
this.passed_records = passed_records;
this.failed_records = failed_records;
this.errors = errors;
this.warnings = warnings;
}
@Override
public String toString() {
return "SummaryResult{" +
"rule_name='" + rule_name + '\'' +
", passed_records=" + passed_records +
", failed_records=" + failed_records +
", errors=" + errors +
", warnings=" + warnings +
'}';
}
}

View File

@ -0,0 +1,59 @@
package eu.dnetlib.validatorapi.entities;
import eu.dnetlib.validator2.validation.guideline.Guideline;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name = "validation_jobs")
public class ValidationJob {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
public int id; //not in use for now
@Column(name = "base_url")
public String baseUrl;
@Column(name="number_of_records")
public int numberOfRecords;
@Column(name="guidelines")
public String guidelines;
@Column(name="started")
public Date startDate;
@Column(name="ended")
public Date endDate;
@Column(name = "records_tested")
public int recordsTested;
@Column(name="duration")
public String status; //stopped, completed, in progres
@Column(name="score")
public double score;
public ValidationJob(){
startDate = new Date();
}
public ValidationJob(String baseUrl, int numberOfRecords) {
this.startDate = new Date();
this.baseUrl = baseUrl;
this.numberOfRecords = numberOfRecords;
this.status = "IN_PROGRESS";
}
@Override
public String toString() {
return "ValidationJob {" +
"id=" + id +
", baseUrl='" + baseUrl + '\'' +
", numberOfRecords=" + numberOfRecords +
", guidelines='" + guidelines + '\'' +
", startDate=" + startDate +
", endDate=" + endDate +
", recordsTested=" + recordsTested +
", status='" + status + '\'' +
", score=" + score +
'}';
}
}

View File

@ -0,0 +1,62 @@
package eu.dnetlib.validatorapi.entities;
import eu.dnetlib.validator2.engine.Status;
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
import org.hibernate.annotations.Type;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
@Entity
@Table(name="validation_results")
@IdClass(ValidationJobResult.class)
public class ValidationJobResult implements Serializable {
@Id
@Column(name = "validation_job_id")
public int validationJobId;
@Id
@Column(name = "rule_name")
public String ruleName;
@Id
@Column(name = "rule_weight")
public int ruleWeight;
@Id
@Column(name = "record_url")
public String recordUrl;
//not in use yet
@Column(name = "warnings", columnDefinition = "text[]")
@Type(type = "eu.dnetlib.validatorapi.utils.CustomStringArrayType")
public String[] warnings;
@Column(name = "errors", columnDefinition = "text[]")
@Type(type = "eu.dnetlib.validatorapi.utils.CustomStringArrayType")
public String[] errors;
@Column(name = "internal_error")
public String internalError;
@Column(name = "status")
public String status;
@Column(name = "score")
public double score;
public ValidationJobResult() {}
@Override
public String toString() {
return "ValidationJobResult{" +
", warnings=" + warnings +
", errors=" + errors +
", internalError='" + internalError + '\'' +
", status='" + status + '\'' +
", score=" + score +
'}';
}
}

View File

@ -0,0 +1,10 @@
package eu.dnetlib.validatorapi.repository;
import eu.dnetlib.validatorapi.entities.ValidationJob;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ValidationJobRepository extends JpaRepository<ValidationJob, Long> {
}

View File

@ -0,0 +1,23 @@
package eu.dnetlib.validatorapi.repository;
import eu.dnetlib.validatorapi.entities.SummaryResult;
import eu.dnetlib.validatorapi.entities.ValidationJobResult;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ValidationResultRepository extends JpaRepository<ValidationJobResult, Long> {
@Query(value =
"SELECT NEW eu.dnetlib.validatorapi.entities.SummaryResult(sr.ruleName, " +
"COUNT(CASE WHEN sr.status = 'SUCCESS' THEN 1 END) AS passed_records, " +
"COUNT(CASE WHEN sr.status = 'FAILURE' THEN 1 END) AS failed_records, " +
"COUNT(CASE WHEN array_length(sr.errors, 1) > 0 THEN 1 END) AS errors, " +
"COUNT(CASE WHEN array_length(sr.warnings, 1) > 0 THEN 1 END) AS warnings) " +
"FROM ValidationJobResult sr " +
"GROUP BY sr.ruleName")
List<SummaryResult> getSummarryResult();
}

View File

@ -0,0 +1,79 @@
package eu.dnetlib.validatorapi.utils;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.usertype.UserType;
import java.io.Serializable;
import java.sql.*;
import java.util.Arrays;
public class CustomStringArrayType implements UserType {
@Override
public int[] sqlTypes() {
return new int[]{Types.ARRAY};
}
@Override
public Class returnedClass() {
return String[].class;
}
@Override
public boolean equals(Object o1, Object o2) throws HibernateException {
if (o1 instanceof String[] && o2 instanceof String[]) {
return Arrays.deepEquals((String[])o1, (String[])o2);
} else {
return false;
}
}
@Override
public int hashCode(Object o) throws HibernateException {
return Arrays.hashCode((String[])o);
}
@Override
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner)
throws HibernateException, SQLException {
Array array = rs.getArray(names[0]);
return array != null ? array.getArray() : null;
}
@Override
public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session)
throws HibernateException, SQLException {
if (value != null && st != null) {
Array array = session.connection().createArrayOf("text", (String[])value);
st.setArray(index, array);
} else {
st.setNull(index, sqlTypes()[0]);
}
}
@Override
public Object deepCopy(Object o) throws HibernateException {
String[] a = (String[])o;
return Arrays.copyOf(a, a.length);
}
@Override
public boolean isMutable() {
return false;
}
@Override
public Serializable disassemble(Object o) throws HibernateException {
return (Serializable) o;
}
@Override
public Object assemble(Serializable serializable, Object o) throws HibernateException {
return serializable;
}
@Override
public Object replace(Object o, Object o1, Object o2) throws HibernateException {
return o;
}
}

View File

@ -0,0 +1,9 @@
server.port = 9200
## PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost:5432/validator
spring.datasource.username=dnet
spring.datasource.password=pass
#drop n create table again, good for testing, comment this in production or set as validate
spring.jpa.hibernate.ddl-auto=update

View File

@ -0,0 +1,25 @@
CREATE TABLE public.validation_jobs (
id SERIAL PRIMARY KEY,
base_url text,
number_of_records text DEFAULT 10,
guidelines text NOT NULL,
started timestamp without time zone NOT NULL,
ended timestamp without time zone,
records_tested integer,
status text,
score text,
duration text
);
ALTER TABLE public.validation_jobs OWNER TO dnet;
CREATE TABLE public.validation_results (
validation_job_id integer REFERENCES validation_jobs (id),
record_url text,
rule_name text,
warnings text[],
errors text[],
internal_error text,
status text,
score double precision
);

10640
src/main/resources/records.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,280 @@
<?xml version="1.0" encoding="UTF-8" ?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2020-04-06T13:57:50Z</responseDate>
<request verb="ListRecords" metadataPrefix="oai_dc" set="ec_fundedresources">https://dias.library.tuc.gr/oaiHandler
</request>
<ListRecords>
<record>
<header>
<identifier>oai:dlib.tuc.gr:21811_oa</identifier>
<datestamp>2012-10-10T00:00:00Z</datestamp>
</header>
<metadata>
<oai_dc:dc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:type>info:eu-repo/semantics/article</dc:type>
<dc:title xml:lang="en">Mainstream traffic flow control on freeways using variable speed limits</dc:title>
<dc:creator xml:lang="en">Carlson Rodrigo Castelan ()</dc:creator>
<dc:creator xml:lang="el">Παπαμιχαηλ Ιωαννης(http://users.isc.tuc.gr/~ipapa)</dc:creator>
<dc:creator xml:lang="en">Papamichail Ioannis(http://users.isc.tuc.gr/~ipapa)</dc:creator>
<dc:creator xml:lang="el">Παπαγεωργιου Μαρκος(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:creator xml:lang="en">Papageorgiou Markos(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:subject xml:lang="en">Traffic incident management,traffic congestion management,traffic incident
management
</dc:subject>
<dc:identifier>http://purl.tuc.gr/dl/dias/CF2DBEC9-EA4E-4D15-931D-C8D5D903D718</dc:identifier>
<dc:identifier>10.4237/transportes.v21i3.694</dc:identifier>
<dc:date>Published at: 2014-09-25</dc:date>
<dc:language>en</dc:language>
<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
<dc:rights xml:lang="en">License: http://creativecommons.org/licenses/by-nc-nd/4.0/</dc:rights>
<dc:format>application/pdf</dc:format>
<dc:date>Issued on: 2013</dc:date>
<dc:description xml:lang="en">Summarization: Mainstream Traffic Flow Control (MTFC), enabled via variable
speed limits, is a control concept for real-time freeway traffic management. The benefits of MTFC for
efficient freeway traffic flow have been demonstrated recently using an optimal control approach and a
feedback control approach. In this paper, both control approaches are reviewed and applied to a freeway
network in a simulation environment. The validated network model used reflects an actual freeway (a
ring-road), fed with actual (measured) demands. The optimal and feedback control results are discussed,
compared and demonstrated to improve significantly the system performance. In particular, the feedback
control scheme is deemed suitable for immediate practical application as it takes into account operational
requirements and constraints, while its results are shown to be satisfactory. In addition, the control
system performance was not very sensitive to variations of the parameters of the feedback controller. This
result indicates that the burden associated with fine tuning of the controller may be reduced in the field.
</dc:description>
<dc:publisher xml:lang="en">ANPET - Associação Nacional de Pesquisa e Ensino em Transportes</dc:publisher>
<dc:description xml:lang="en">Presented on: Transportes</dc:description>
<dc:type>peer-reviewed</dc:type>
<dc:identifier xml:lang="en">Bibliographic citation: R.C. Carlson, I. Papamichail, M. Papageorgiou,
"Mainstream traffic flow control on freeways using variable speed limits," Transportes, vol. 21, no. 3, pp.
56-65, 2013.
doi:10.4237/transportes.v21i3.694
</dc:identifier>
<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
</oai_dc:dc>
</metadata>
</record>
<record>
<header>
<identifier>oai:dlib.tuc.gr:22973_oa</identifier>
<datestamp>2012-10-10T00:00:00Z</datestamp>
</header>
<metadata>
<oai_dc:dc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:type>info:eu-repo/semantics/conferenceObject</dc:type>
<dc:title xml:lang="en">Motorway flow optimization in presence of vehicle automation and communication
systems
</dc:title>
<dc:creator xml:lang="en">Roncoli Claudio()</dc:creator>
<dc:creator xml:lang="el">Παπαμιχαηλ Ιωαννης(http://users.isc.tuc.gr/~ipapa)</dc:creator>
<dc:creator xml:lang="en">Papamichail Ioannis(http://users.isc.tuc.gr/~ipapa)</dc:creator>
<dc:creator xml:lang="el">Παπαγεωργιου Μαρκος(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:creator xml:lang="en">Papageorgiou Markos(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:description xml:lang="en">The research leading to these results has received funding from the European
Research Council under the European Union's Seventh Framework Programme (FP/2007-2013) / ERC Grant Agreement
n. 321132, project TRAMAN21.
</dc:description>
<dc:subject xml:lang="en">Motorway traffic control</dc:subject>
<dc:subject xml:lang="en">Traffic flow optimisation</dc:subject>
<dc:subject xml:lang="en">Quadratic programming</dc:subject>
<dc:identifier>http://purl.tuc.gr/dl/dias/9BEA2A38-AFF2-49E1-B344-30E2C7BD34B5</dc:identifier>
<dc:date>Published at: 2014-10-12</dc:date>
<dc:language>en</dc:language>
<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
<dc:rights xml:lang="en">License: http://creativecommons.org/licenses/by-nc-nd/4.0/</dc:rights>
<dc:format>application/pdf</dc:format>
<dc:date>Issued on: 2014</dc:date>
<dc:description xml:lang="en">Summarization: This paper describes a novel approach for defining optimal
strategies in motorway traffic flow control, considering that a portion of vehicles are equipped with
vehicle automation and communication systems. An optimisation problem, formulated as a Quadratic Programming
(QP) problem, is developed with the purpose of minimising traffic congestion. The proposed problem is based
on a first-order macroscopic traffic flow model able to capture the lane changing and the capacity drop
phenomena. An application example demonstrates the achievable improvements in terms of the Total Time Spent
if the vehicles travelling on the motorway are influenced by the control actions computed as a solution of
the optimisation problem.
</dc:description>
<dc:description xml:lang="el">Παρουσιάστηκε στο: International Conference on Engineering and Applied Sciences
Optimization
</dc:description>
<dc:publisher xml:lang="en">National Technical University of Athens</dc:publisher>
<dc:identifier xml:lang="el">Βιβλιογραφική αναφορά: C. Roncoli, M. Papageorgiou, I. Papamichail, "Motorway
flow optimization in presence of vehicle automation and communication systems," in Proceedings of the 1st
International Conference on Engineering and Applied Science Optimization (OPT-i), 2014, pp. 519-529.
</dc:identifier>
<dc:type>full paper</dc:type>
<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
</oai_dc:dc>
</metadata>
</record>
<record>
<header>
<identifier>oai:dlib.tuc.gr:22969_oa</identifier>
<datestamp>2012-10-10T00:00:00Z</datestamp>
</header>
<metadata>
<oai_dc:dc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:type>info:eu-repo/semantics/conferenceObject</dc:type>
<dc:title xml:lang="en">On microscopic modelling of adaptive cruise control systems</dc:title>
<dc:creator xml:lang="el">Ντουσακης Ιωαννης-Αντωνιος(http://users.isc.tuc.gr/~intousakis1)</dc:creator>
<dc:creator xml:lang="en">Ntousakis Ioannis-Antonios(http://users.isc.tuc.gr/~intousakis1)</dc:creator>
<dc:creator xml:lang="el">Νικολος Ιωαννης(http://users.isc.tuc.gr/~inikolos)</dc:creator>
<dc:creator xml:lang="en">Nikolos Ioannis(http://users.isc.tuc.gr/~inikolos)</dc:creator>
<dc:creator xml:lang="el">Παπαγεωργιου Μαρκος(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:creator xml:lang="en">Papageorgiou Markos(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:description xml:lang="en">The research leading to these results has received funding from the European
Research Council under the European Union's Seventh Framework Programme (FP/2007-2013) / ERC Grant Agreement
n. 321132, project TRAMAN21.
</dc:description>
<dc:subject xml:lang="en">Adaptive cruise control</dc:subject>
<dc:subject xml:lang="en">Traffic flow modelling</dc:subject>
<dc:subject xml:lang="en">Microscopic simulation</dc:subject>
<dc:identifier>http://purl.tuc.gr/dl/dias/F89B7182-6D1F-4179-A6D8-A875F09FD053</dc:identifier>
<dc:date>Published at: 2014-10-12</dc:date>
<dc:language>en</dc:language>
<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
<dc:rights xml:lang="en">License: http://creativecommons.org/licenses/by-nc-nd/4.0/</dc:rights>
<dc:format>application/pdf</dc:format>
<dc:date>Issued on: 2014</dc:date>
<dc:description xml:lang="en">Summarization: The Adaptive Cruise Control (ACC) system, is one of the emerging
vehicle technologies that has already been deployed in the market. Although it was designed mainly to
enhance driver comfort and passengers safety, it also affects the dynamics of traffic flow. For this
reason, a strong research interest in the field of modelling and simulation of ACC-equipped vehicles has
been increasingly observed in the last years. In this work, previous modelling efforts reported in the
literature are reviewed, and some critical aspects to be considered when designing or simulating such
systems are discussed. Moreover, the integration of ACC-equipped vehicle simulation in the commercial
traffic simulator Aimsun is described; this is subsequently used to run simulations for different
penetration rates of ACC-equipped vehicles, different desired time-gap settings and different networks, to
assess their impact on traffic flow characteristics.
</dc:description>
<dc:description xml:lang="el">Παρουσιάστηκε στο: International Symposium of Transport Simulation 2014
</dc:description>
<dc:publisher xml:lang="en">Elsevier</dc:publisher>
<dc:identifier xml:lang="en">Bibliographic citation: I.A. Ntousakis, I.K. Nikolos, M. Papageorgiou, "On
Microscopic Modelling Of Adaptive Cruise Control Systems," in Proceedings of the 4th International Symposium
of Transport Simulation (ISTS), 2014.
</dc:identifier>
<dc:type>full paper</dc:type>
<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
</oai_dc:dc>
</metadata>
</record>
<record>
<header>
<identifier>oai:dlib.tuc.gr:22968_oa</identifier>
<datestamp>2012-10-10T00:00:00Z</datestamp>
</header>
<metadata>
<oai_dc:dc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:type>info:eu-repo/semantics/conferenceObject</dc:type>
<dc:title xml:lang="en">Stability investigation for simple PI-controlled traffic systems</dc:title>
<dc:creator xml:lang="en">Karafyllis Iason()</dc:creator>
<dc:creator xml:lang="el">Παπαγεωργιου Μαρκος(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:creator xml:lang="en">Papageorgiou Markos(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:description xml:lang="en">The research leading to these results has received funding from the European
Research Council under the European Union's Seventh Framework Programme (FP/2007-2013) / ERC Grant Agreement
n. 321132, project TRAMAN21.
</dc:description>
<dc:subject xml:lang="en">Systems, Nonlinear,nonlinear systems,systems nonlinear</dc:subject>
<dc:subject xml:lang="en">DES (System analysis),Discrete event systems,Sampled-data systems,discrete time
systems,des system analysis,discrete event systems,sampled data systems
</dc:subject>
<dc:subject xml:lang="en">PI-regulator</dc:subject>
<dc:identifier>http://purl.tuc.gr/dl/dias/A5DB2E56-C2C1-4AF6-A769-6BE271182E1C</dc:identifier>
<dc:identifier>978-1-4799-2889-7 10.1109/ISCCSP.2014.6877846</dc:identifier>
<dc:date>Published at: 2014-10-13</dc:date>
<dc:language>en</dc:language>
<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
<dc:rights xml:lang="en">License: http://creativecommons.org/licenses/by-nc-nd/4.0/</dc:rights>
<dc:format>application/pdf</dc:format>
<dc:date>Issued on: 2014</dc:date>
<dc:description xml:lang="en">Summarization: This paper provides sufficient conditions for the Input-to-State
Stability property of simple uncertain vehicular-traffic network models under the effect of a PI-regulator.
Local stability properties for vehicular-traffic networks under the effect of PI-regulator control are
studied as well: the region of attraction of a locally exponentially stable equilibrium point is estimated
by means of Lyapunov functions.
</dc:description>
<dc:description xml:lang="el">Παρουσιάστηκε στο: 6th International Symposium on Communications, Controls, and
Signal Processing
</dc:description>
<dc:publisher xml:lang="en">Institute of Electrical and Electronics Engineers</dc:publisher>
<dc:identifier xml:lang="en">Bibliographic citation: I. Karafyllis, M. Papageorgiou, "Stability investigation
for simple PI-controlled traffic systems," in Proceedings of 6th International Symposium on Communications,
Controls, and Signal Processing, 2014, pp. 186-189.
</dc:identifier>
<dc:type>full paper</dc:type>
<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
</oai_dc:dc>
</metadata>
</record>
<record>
<header>
<identifier>oai:dlib.tuc.gr:24473_oa</identifier>
<datestamp>2012-10-10T00:00:00Z</datestamp>
</header>
<metadata>
<oai_dc:dc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:type>info:eu-repo/semantics/article</dc:type>
<dc:title xml:lang="en">Microsimulation analysis of practical aspects of traffic control with variable speed
limits
</dc:title>
<dc:creator xml:lang="el">Παπαγεωργιου Μαρκος(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:creator xml:lang="en">Papageorgiou Markos(http://users.isc.tuc.gr/~mpapageorgiou)</dc:creator>
<dc:creator xml:lang="en">Muller Eduardo Rauh()</dc:creator>
<dc:creator xml:lang="en">Carlson Rodrigo Castelan()</dc:creator>
<dc:creator xml:lang="en">Kraus Werner()</dc:creator>
<dc:description xml:lang="en">The research leading to these results has received funding from the European
Research Council under the European Union's Seventh Framework Programme (FP/2007-2013) / ERC Grant Agreement
n. 321132, project TRAMAN21. The paper has been published by IEEE
(http://ieeexplore.ieee.org/Xplore/defdeny.jsp?url=http%3A%2F%2Fieeexplore.ieee.org%2Fstamp%2Fstamp.jsp%3Ftp%3D%26arnumber%3D7006741&amp;denyReason=-134&amp;arnumber=7006741&amp;productsMatched=null)
and is IEEE copyrighted.
</dc:description>
<dc:subject xml:lang="en">Traffic volume,traffic flow,traffic volume</dc:subject>
<dc:subject xml:lang="en">Mainstream Traffic Flow Control</dc:subject>
<dc:subject xml:lang="en">Variable Speed Limits</dc:subject>
<dc:subject xml:lang="en">Freeway traffic control</dc:subject>
<dc:identifier>http://purl.tuc.gr/dl/dias/1968E8C7-94C6-4EB3-A513-C686F3F12B79</dc:identifier>
<dc:identifier>10.1109/TITS.2014.2374167</dc:identifier>
<dc:date>Published at: 2015-03-26</dc:date>
<dc:language>en</dc:language>
<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
<dc:rights xml:lang="en">License: http://creativecommons.org/licenses/by-nc-nd/4.0/</dc:rights>
<dc:format>application/pdf</dc:format>
<dc:date>Issued on: 2015</dc:date>
<dc:description xml:lang="en">Summarization: Mainstream traffic flow control (MTFC) with variable speed limits
(VSLs) is a freeway traffic control method that aims to maximize throughput by regulating the mainstream
flow upstream from a bottleneck. Previous studies in a macroscopic simulator have shown optimal and feedback
MTFC potential to improve traffic conditions. In this paper, local feedback MTFC is applied in microscopic
simulation for an on-ramp merge bottleneck. Traffic behavior reveals important aspects that had not been
previously captured in macroscopic simulation. Mainly, the more realistic VSL application at specific points
instead of along an entire freeway section produces a slower traffic response to speed limit changes. In
addition, the nonlinear capacity flow/speed limit relation observed in the microscopic model is more
pronounced than what was observed at the macroscopic level. After appropriate modifications in the control
law, significant improvements in traffic conditions are obtained.
</dc:description>
<dc:publisher xml:lang="en">Institute of Electrical and Electronics Engineers</dc:publisher>
<dc:description xml:lang="en">Presented on: IEEE Transactions on Intelligent Transportation Systems
</dc:description>
<dc:type>peer-reviewed</dc:type>
<dc:identifier xml:lang="en">Bibliographic citation: E.R. Müller, R.C. Carlson, W. Kraus Jr, M. Papageorgiou,
"Microsimulation analysis of practical aspects of traffic control with variable speed limits," IEEE
Transactions on Intelligent Transportation Systems, vol. 16, no.1, pp. 512-523, 2015.
</dc:identifier>
<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
</oai_dc:dc>
</metadata>
</record>
<resumptionToken expirationDate="2020-04-07T16:59:31Z" completeListSize="14459" cursor="0">1586181471310:302
</resumptionToken>
</ListRecords>
</OAI-PMH>