2010-12-03 54 views
1

我使用JENA,RDF和W3C SSNXG的传感器本体来注释传感器观察值。注释传感器数据,但没有rdf:类型

我已经使用本地名称空间为个人创建了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。我如何正确添加类型元数据?

回答

2

你接近:

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

您常用的一套RDF召唤:类型为字符串 “HTTP://purl.oclc.org/NET/...”,而不是与URL资源。

但是,您可以通过两种方式来简化此操作。首先,Property type已经存在于耶纳作为RDF.type。其次,你并不需要创建一个说法,只是添加到直接模式:

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

(你可以用耶拿schemagen创建本体的Java常量,顺便说一句)

相关问题