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