如何在C#中使用dotNetRDF解析JSON-LD提要

问题描述 投票:0回答:1

我正在尝试在dotnet应用程序中使用json-ld格式的终结点。

我以前没有遇到过这种格式,但是大多数示例都是针对JavaScript的。

我尝试了几个库,但由于参考文献很少,因此失败了。

我已将端点的内容加载到内存中,现在我想看看如何最好地遍历节点,但是我无法获取内容并对它们执行任何操作。

最简单的例子应该看起来像:

JsonLdParser parser = new JsonLdParser();
parser.Load(contentsfromuri)

但是,以上要求您声明一个IRdfReader,该IRdfReader不能实例化为其抽象类。

json-ld dotnetrdf
1个回答
0
投票

您将在https://github.com/dotnetrdf/dotnetrdf/wiki上找到所有的dotNetRDF文档。在https://github.com/dotnetrdf/dotnetrdf/wiki/UserGuide-Reading-RDF有一些解析来自各种来源的RDF数据的示例。在RDF中,有些语法只能序列化一个图,而某些语法可以序列化多个图-JSON-LD是后者的一种,因此您还需要阅读section on Store Readers

以下示例均显示了如何将数据加载到内存中。

如果您的内容来源是“行为良好”(发送正确的Content-Type标头,或者如果是本地文件,则具有预期的文件名后缀),那么加载数据就像创建一个新的内存图并调用其Load方法:

var store = new TripleStore();

# This is a convenience wrapper that simply invokes UriLoader.Load()
store.LoadFromUri(contentSourceUri)

注意:这使用扩展方法(如https://github.com/dotnetrdf/dotnetrdf/wiki/UserGuide-Extension-Methods中所述),它只是周围的便利包装:

# Create the store
var store  = new TripleStore();

# UriLoader will make an HTTP request and parse the response, 
# selecting the parser to be used based on the Content-Type header returned.
UriLoader.Load(store, contentSourceUri);

如果从已检索的字符串中进行解析,或者需要明确说明要使用的解析器实例(例如,当您希望在创建解析器实例时将某些选项传递给解析器时,可能会出现这种情况),那么您需要稍微冗长一些的方法:

var store = new TripleStore();

# Create the parser (we can pass in options here if needed)
var parser = new JsonLdParser();

# Wrap the string content in a StringReader and pass the target graph and the reader
parser.Load(store, new StringReader(contentsFromUri));

最后要特别注意的是JSON-LD。该解析器是一个符合规范的JSON-LD 1.0解析器,但它对JSON-LD 1.1的支持基于规范的早期草案。我目前正在努力更新实现,希望能在几周内发布一个支持JSON-LD 1.1建议的新版本。

© www.soinside.com 2019 - 2024. All rights reserved.