private IEnumerable<string> GetClassUris() { var source = new SparqlHttpSource(opts.endpoint); var properties = new ClassQuerySink(opts.ignoreBlankNodes, opts.ontologyNamespace, new[] { "u" }); source.RunSparqlQuery(sqGetClasses, properties); return properties.bindings.Map(nvc => nvc["u"]); }
private OntologyClass GetClass(string classUri) { var u = new Uri(classUri); string className = GetNameFromUri(classUri); Console.WriteLine(className); var source = new SparqlHttpSource(opts.endpoint); var properties = new ClassQuerySink(opts.ignoreBlankNodes, null, new[] { "p", "r" }); string sparqlQuery = string.Format(sqGetProperty, classUri); source.RunSparqlQuery(sparqlQuery, properties); IEnumerable<Tuple<string, string>> q1 = properties.bindings .Map(nvc => new Tuple<string, string>(nvc["p"], nvc["r"])) .Where(t => (!(string.IsNullOrEmpty(t.First) || string.IsNullOrEmpty(t.Second)))); sparqlQuery = string.Format(sqGetObjectProperty, classUri); source.RunSparqlQuery(sparqlQuery, properties); IEnumerable<Tuple<string, string>> q2 = properties.bindings .Map(nvc => new Tuple<string, string>(nvc["p"], nvc["r"])) .Where(t => (!(string.IsNullOrEmpty(t.First) || string.IsNullOrEmpty(t.Second)))); IEnumerable<OntologyProperty> ops = q2.Map(t => new OntologyProperty { Uri = t.First.Trim(), IsObjectProp = true, Name = GetNameFromUri(t.First), Range = GetNameFromUri(t.Second), RangeUri = t.Second }); IEnumerable<OntologyProperty> dps = q1.Map(t => new OntologyProperty { Uri = t.First.Trim(), IsObjectProp = false, Name = GetNameFromUri(t.First), Range = GetNameFromUri(t.Second), RangeUri = t.Second }); var d = new Dictionary<string, OntologyProperty>(); IEnumerable<OntologyProperty> props = ops.Union(dps).Map(p => TranslateType(p)); foreach (OntologyProperty prop in props) { d[prop.Uri] = prop; } var result = new OntologyClass { Name = className, Uri = classUri, Properties = d.Values.Where(p => NamespaceMatches(p)).ToArray() }; return result; }