我想创建一个像PersonA isIn RoomA atTime 12:00
的四元组。我想将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
(或其他类似文件)?
任何建议如何做?
感谢您的回答!
分别编写三元组或四元组非常不寻常。耶拿(Jena)的api通常处理此类项目的集合,例如Graph
,或者更具体地针对您的案例DatasetGraph
,甚至处理java集合。
Jena的输出通常通过DatasetGraph
处理。这里有两个选项:
RDFDataMgr
,只写N-Quad。RDFDataMgr
,它支持多种格式。前者是如此简单地调用(在这种情况下,以目标标准为准:
RDFDataMgr.writeQuads(OutputStream out, Iterator<Quad> iterator)
后者涉及更多:
RDFDataMgr.writeQuads(OutputStream out, Iterator<Quad> iterator)
我相信代表时间序列时无法避免空白节点::特定度量或传感器的(时间戳,值)列表。当然,RDF最初并不是为了表示时间序列而设计的,但是它为每个度量带来了空白节点的额外费用。
AhasTimeStamp ts1,hasValue v1hasTimeStamp ts2,hasValue v2
@@ mrquad,我不确定您是否能够代表自己想要的东西。