Closed espenshi closed 4 years ago
Nydelig! Tusen takk, vi legger den inn i wikien :-)
tor. 30. apr. 2020, 16:26 skrev Espen notifications@github.com:
Her er mitt eksempel på SPARQL-spørring med dotNetRDF for å hente alle koder for klasser som arver fra Byggverkselement. Spørringen gir resultatet jeg ønsker, men gi meg gjerne tilbakemelding på forbedring.
Jeg håper dette kan være til hjelp for noen andre. Legg det gjerne i Wikien.
using VDS.RDF;
using VDS.RDF.Query;
using VDS.RDF.Query.Builder;
public void GetV440Codes()
{
SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://rdfspatial.vegdata.no:7200/repositories/V440")); var prefixes = new NamespaceMapper(true); prefixes.AddNamespace("rdfs", new Uri("http://www.w3.org/2000/01/rdf-schema#")); prefixes.AddNamespace("owl", new Uri("http://www.w3.org/2002/07/owl#")); prefixes.AddNamespace("v440", new Uri("http://rdf.vegdata.no/V440/v440-owl#")); prefixes.AddNamespace("v440bd", new Uri("http://rdf.vegdata.no/V440/v440-brudata-owl#")); string uri = "uri"; string code = "code"; string name = "name"; var queryBuilder = QueryBuilder .Select(new string[] { uri, code, name }) .Where( (triplePatternBuilder) => { triplePatternBuilder .Subject(uri) .PredicateUri("rdfs:subClassOf+") .Object(new Uri("http://rdf.vegdata.no/V440/v440-owl#Byggverkselement")); triplePatternBuilder .Subject(uri) .PredicateUri("rdfs:label") .Object(name); triplePatternBuilder .Subject(uri) .PredicateUri("v440:kode") .Object(code); }); queryBuilder.Prefixes = prefixes; var query = queryBuilder.BuildQuery().ToString(); SparqlResultSet results = endpoint.QueryWithResultSet(query); foreach (SparqlResult result in results) { Console.WriteLine($"URI: {result.Value(uri).ToString()} Code: {result.Value(code).ToString()} Label: {result.Value(name).ToString()}"); }
}
Dette skal resultere i følgende query:
PREFIX rdfs: http://www.w3.org/2000/01/rdf-schema#
PREFIX owl: http://www.w3.org/2002/07/owl#
PREFIX v440: http://rdf.vegdata.no/V440/v440-owl#
PREFIX v440bd: http://rdf.vegdata.no/V440/v440-brudata-owl#
SELECT ?uri ?code ?name WHERE
{
?uri rdfs:subClassOf+ v440:Byggverkselement .
?uri rdfs:label ?name .
?uri v440:kode ?code .
}
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/buildingsmart-norway/maskinlesbar_v440/issues/11, or unsubscribe https://github.com/notifications/unsubscribe-auth/AC66BNKOFCXHRUCNNT6O7WDRPGDAVANCNFSM4MVTRKCA .
Her er lenke til hvor det ligger i WIKI: https://github.com/buildingsmart-norway/maskinlesbar_v440/wiki/02-Tilgang-til-ontologien#sparql-sp%C3%B8rring-med-dotnetrdf-for-%C3%A5-hente-alle-koder-for-klasser-som-arver-fra-byggverkselement-laget-av-espenshi-fra-edr-medeso
Lukker denne issuen, så er det tilgjengelig i lukkede issues og i wiki.
Her er mitt eksempel på SPARQL-spørring med dotNetRDF for å hente alle koder for klasser som arver fra Byggverkselement. Spørringen gir resultatet jeg ønsker, men gi meg gjerne tilbakemelding på forbedring.
Jeg håper dette kan være til hjelp for noen andre. Legg det gjerne i Wikien.
Dette skal resultere i følgende query: