注释传感器数据但没有rdf:type

时间:2010-12-03 16:02:55

标签: java rdf sparql ontology jena

我使用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不可见。如何正确添加类型元数据?

1 个答案:

答案 0 :(得分:2)

你很亲密:

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

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

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

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

(您可以使用jena的schemagen,btw)从本体创建java常量