Solid 如何在实体中创建容器?

Solid 如何在实体中创建容器?,solid,Solid,我正在运行一个独立的单用户v5节点固态服务器。当我以单个用户的身份登录时,我可以在一个不存在的容器中创建一个文档,服务器为我创建一个容器 e、 g POSThttps://my.server:8443/network/001/call/call-001 @前缀c0:。 @前缀foo:。 阿福:呼叫; c0:呼叫方“401-555-0001”; c0:创建“2019-05-02T19:54:10.007Z”; c0:id“call-0001”; c0:网络id“001”; c0:接收器“555-5

我正在运行一个独立的单用户v5节点固态服务器。当我以单个用户的身份登录时,我可以在一个不存在的容器中创建一个文档,服务器为我创建一个容器

e、 g

POSThttps://my.server:8443/network/001/call/call-001
@前缀c0:。
@前缀foo:。
阿福:呼叫;
c0:呼叫方“401-555-0001”;
c0:创建“2019-05-02T19:54:10.007Z”;
c0:id“call-0001”;
c0:网络id“001”;
c0:接收器“555-555-0002”;
c0:更新“2019-05-02T19:54:10.007Z”。
当我将其发布到我自己的单用户服务器上,并且容器
/network/001/call
不存在时,它会为我创建它。但是当我将其发布到Inrupt服务器上(我拥有POD,但不拥有服务器,并且它不处于单用户模式)时,我会收到一个错误:

500:在修补程序之后写入文件失败:错误:enoint:没有这样的文件或目录,请打开“/var/solid/user.inrupt.net/network/001/call/call-001”


所以-我很好奇为什么它会在一种情况下创建容器,而不是在另一种情况下,但我认为短期内,答案也是我应该在将东西放入容器之前显式地创建容器。不幸的是,面向任务的文档目前似乎有点缺乏这方面的内容,因此这个问题的标题就是这样的-如何在SoLiD服务器上创建容器(
POST…
?)?

回到这里,我现在对SoLiD有了更多的了解,能够正确回答这个问题

因此,您可以通过向容器URL发送一个带有空正文的
PUT
请求来创建一个空容器,并附加一个尾随斜杠以指示它是一个容器:
PUThttps://my.server:8443/network/001/call/

不幸的是,在撰写本文时,目前使用最广泛的Solid server软件(Node Solid server)就是这样,因此它需要在其中创建一个文件作为解决方法。这是可行的,因为Solid规范明确规定也应该创建中间容器

(当然,您可以使用。)


您在初始问题描述中遇到的错误似乎是NSS第4版中的一个错误,目前已修复。

我需要在inrupt.net Solid服务器(当时的版本
Solid 5.6.3
上的我的配置文件中创建另一个收件箱。我尝试像这样放置请求,结果成功:

PUT /inbox2 HTTP/1.1
Cookie: (cookie from browser where I'm logged in)
Link: <.acl>; rel="acl", <.meta>; rel="describedBy", <http://www.w3.org/ns/ldp#Container>; rel="type", <http://www.w3.org/ns/ldp#BasicContainer>; rel="type"
Content-Type: text/turtle
Host: inbox2.inrupt.net
Content-Length: 274
@prefix : <#>.
@prefix inbox: <>.
@prefix ldp: <http://www.w3.org/ns/ldp#>.
@prefix terms: <http://purl.org/dc/terms/>.
@prefix XML: <http://www.w3.org/2001/XMLSchema#>.
@prefix st: <http://www.w3.org/ns/posix/stat#>.
inbox:
a ldp:BasicContainer, ldp:Container.
PUT/inbox2 HTTP/1.1
Cookie:(来自我登录的浏览器的Cookie)
链接:;rel=“acl”;;rel=“descripeby”;;rel=“type”;;rel=“type”
内容类型:文本/乌龟
主机:inbox2.inrupt.net
内容长度:274
@前缀:。
@前缀收件箱:。
@前缀ldp:。
@前缀项:。
@前缀XML:。
@前缀st:。
收件箱:
基本容器,容器。

我从最初的收件箱中获取了正文。

我认为Inrupt服务器仍然运行着
solid server
的v4,而不是v5,所以这可能就是问题所在?当然,您也可以在本地使用v4进行尝试。这显然是行为上的差异。但似乎我仍然能够明确地理解创建一个没有任何内容的新容器,这将使这两个容器等效。只是没有太多容易找到的示例。
PUT /inbox2 HTTP/1.1
Cookie: (cookie from browser where I'm logged in)
Link: <.acl>; rel="acl", <.meta>; rel="describedBy", <http://www.w3.org/ns/ldp#Container>; rel="type", <http://www.w3.org/ns/ldp#BasicContainer>; rel="type"
Content-Type: text/turtle
Host: inbox2.inrupt.net
Content-Length: 274
@prefix : <#>.
@prefix inbox: <>.
@prefix ldp: <http://www.w3.org/ns/ldp#>.
@prefix terms: <http://purl.org/dc/terms/>.
@prefix XML: <http://www.w3.org/2001/XMLSchema#>.
@prefix st: <http://www.w3.org/ns/posix/stat#>.
inbox:
a ldp:BasicContainer, ldp:Container.