// Add a dataset in a graph to the database public async Task <DatasetResponse> AddDataset(Graph g, int categoryId) { // Find publisher id Publisher publisher = await AddPublisher(g); await _unitOfWork.CompleteAsync(); // Find the dataset subject uri IUriNode dcatDataset = g.CreateUriNode("dcat:Dataset"); String[] datasetUri = findSubjectUri(g, dcatDataset).Split(","); // From the dataset uri make a dictionary with the attributes Dictionary <string, string> attributes = getAttributesFromSubject(g, datasetUri[0]); // Add relevant attributes to a new dataset Dataset dataset = new Dataset { Title = attributes.GetValueOrDefault("title", "Ingen tittel"), Identifier = datasetUri[0], Description = attributes.GetValueOrDefault("description", ""), PublicationStatus = attributes.ContainsKey("distribution") ? EPublicationStatus.published : EPublicationStatus.notPublished, PublisherId = publisher.Id, CategoryId = categoryId, DatePublished = getDateOrNow(attributes.GetValueOrDefault("issued", "")), DateLastUpdated = getDateOrNow(attributes.GetValueOrDefault("modified", "")), AccessLevel = EAccessLevel.green, }; var createDatasetTask = Task.Run(async() => { // Add the dataset to the database dataset = await _datasetRepository.AddAsync(dataset); await _unitOfWork.CompleteAsync(); await AddTags(g, attributes.GetValueOrDefault("keyword", ""), dataset); await AddDistribution(g, dataset.Id); return(dataset); }); return(await _datasetService.CreateGitLabProject(createDatasetTask, dataset)); }