private string?ConstructInsertResourceQueryString(ResourceVm resourceVm, string resourceAbsoluteUri) { SparqlParameterizedString sparqlParameterizedInsertQuery = new(); sparqlParameterizedInsertQuery.CommandText = "INSERT DATA {@sub @pred @obj"; string?insertQuery = null; sparqlParameterizedInsertQuery.SetUri("sub", new Uri(resourceAbsoluteUri)); SparqlParameterizedString sparqlParameterizedInsertSubQuery = new(); sparqlParameterizedInsertSubQuery.CommandText = "; @pred @obj"; foreach (var propertyName in resourceVm.Predicates.Keys) { if (_namespaceFactoryService.GetAbsoluteUriFromQname(propertyName, out string predAbsoluteUri)) { PredicateContent propertyContent = resourceVm.Predicates[propertyName]; insertQuery += PopulateInsertQueryString(propertyContent, sparqlParameterizedInsertQuery, sparqlParameterizedInsertSubQuery, resourceAbsoluteUri, predAbsoluteUri); if (string.IsNullOrEmpty(insertQuery)) { return(null); } insertQuery += "} "; } else { return(null); } } return(insertQuery); }
private string?PopulateInsertQueryString(PredicateContent propertyContent, SparqlParameterizedString sparqlParameterizedInsertQuery, SparqlParameterizedString sparqlParameterizedInsertSubQuery, string resourceAbsoluteUri, string predicateAbsoluteUri) { sparqlParameterizedInsertQuery.SetUri("sub", new Uri(resourceAbsoluteUri)); sparqlParameterizedInsertQuery.SetUri("pred", new Uri(predicateAbsoluteUri)); sparqlParameterizedInsertSubQuery.SetUri("pred", new Uri(predicateAbsoluteUri)); string?insertQuery = ""; bool first = true; if (propertyContent.Curies != null) { foreach (var objCurie in propertyContent.Curies) { if (_namespaceFactoryService.GetAbsoluteUriFromQname(objCurie, out string objectAbsoluteUri)) { if (first) { sparqlParameterizedInsertQuery.SetUri("obj", new Uri(objectAbsoluteUri)); insertQuery = sparqlParameterizedInsertQuery.ToString(); first = false; continue; } sparqlParameterizedInsertSubQuery.SetUri("obj", new Uri(objectAbsoluteUri)); insertQuery += sparqlParameterizedInsertSubQuery.ToString(); } else { return(null); } } } if (propertyContent.Literals != null) { foreach (var literal in propertyContent.Literals) { if (first) { sparqlParameterizedInsertQuery = ConstructLiteralString(sparqlParameterizedInsertQuery, literal); insertQuery = sparqlParameterizedInsertQuery.ToString(); first = false; continue; } sparqlParameterizedInsertSubQuery = ConstructLiteralString(sparqlParameterizedInsertSubQuery, literal); insertQuery += sparqlParameterizedInsertSubQuery.ToString(); } } return(insertQuery); }