【发布时间】:2014-10-01 15:53:25
【问题描述】:
我想创建一个像 PersonA isIn RoomA atTime 12:00 这样的 Quadruple。我想将System.current.TimeStamp() 用于atTime。
我尝试通过以下方式创建四边形:
Node roomA_Node = NodeFactory.createURI(((Resource) roomA).getURI());
Node person1_Node = NodeFactory.createURI(((Resource) person1).getURI());
Node isin_node = NodeFactory.createURI(((Resource) ROOM_STREAM.isIn).getURI());
Node timestamp = NodeFactory.createLiteral("2001-10-26T21:32:52",
XSDDatatype.XSDdateTime);
Quad q = new Quad(timestamp, person1_Node, isin_node, roomA_Node);
但是,现在我被卡住了,因为我想将其写入TTL(或类似的)文件?
有什么建议吗?
感谢您的回答!
【问题讨论】:
-
我想你可能误解了四边形是什么。四边形不是“四位关系”或“带有主语、谓语、宾语和时间/间接宾语/其他东西的陈述”。四边形是三元组和图形名称。数据集可以具有包含三元组的命名图,因此您需要一个四元组来记录三元组和出现的图。
-
这听起来更像是您只想要一个 n 元关系,在这种情况下,请查看 Defining N-ary Relations on the Semantic Web,您最终可能会得到类似
[] hasSubject personA ; hasLocation roomA ; atTime noon .的数据。 -
最后,发帖前请阅读标签说明;这个问题与“The Apache HTTP Server,通常称为 Apache,......一个开源 HTTP 服务器”无关。我已经删除了标签。
-
@JoshuaTaylor 非常感谢您的回答!您能否举一个具体的例子,如何在
jena中实现n-ary relation,因为我认为一个四元组可以由一个四元组实现?或者quad不是我的问题的正确数据结构? -
我可以加入这个对话吗(我是 Vivien 的同事)。我们知道quad(在jena中)用于在命名图中存储三元组。我们的想法是“滥用”这个特性,给三元组加上时间戳。我不知道这是否实用(即,它会带来开销吗?),但我们只是想试一试。基本上我们想做的是这样的:
RdfQuadruple q = new RdfQuadruple(subject, predicate, object, timestamp)我们正在考虑在耶拿不使用空白节点的方法。
标签: rdf jena semantic-web