1

我正在使用 JENA、RDF 和 W3C SSNXG 的传感器本体对传感器观察结果进行注释。

我使用个人的本地命名空间创建了 SSNXG 的 SensingDevice 个人。当我使用个人的 URI 创建 RDF 资源时,我得到的只是一个描述。但是,不会创建 rdf:type 元数据。这必须在代码中明确完成吗?

我试过像这样添加这些信息:

OntClass sensingDevice = ssn.getOntClass(NS + "SensingDevice");
Individual ard = ssn.createIndividual(DTPNS + arduino, sensingDevice);
Property type = incomingData.createProperty(RDFNS, "type");
Statement stmt0 = incomingData.createStatement(ardu, type, NS + "SensingDevice");
incomingData.add(stmt0);

然而,这导致...

<rdf:Description rdf:about="http://dtp-126.sncs.abdn.ac.uk#CD7514">
    <rdf:type>http://purl.oclc.org/NET/ssnx/ssn#SensingDevice</rdf:type
</rdf:Description>

这似乎对 SPARQL 不可见。如何正确添加类型元数据?

4

1 回答 1

2

你很接近:

Statement stmt0 = incomingData.createStatement(ardu, type, sensingDevice);

您使用的调用将 rdf:type 设置为字符串“http://purl.oclc.org/NET/...”,而不是具有该 URL 的资源。

但是,您可以通过两种方式简化它。首先,Property type在耶拿中已经存在RDF.type。其次,不需要创建语句,直接添加到模型中即可:

incomingData.add(ard, RDF.type, sendingDevice);

(您可以使用耶拿的schemagen从本体创建 java 常量,顺便说一句)

于 2010-12-03T16:41:03.783 回答