以编程方式读取属性的数据类型

时间:2014-08-21 14:51:24

标签: java rdf jena owl

...
...
<owl:DatatypeProperty rdf:about="http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#fileName">
    <rdfs:label>fileName</rdfs:label>
    <rdfs:comment>Name of File</rdfs:comment>
    <rdfs:domain rdf:resource="http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#File"/>
    <rdfs:range rdf:resource="&xsd;string"/>
</owl:DatatypeProperty>


<owl:DatatypeProperty rdf:about="http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#fileLastAccessed">
    <rdfs:label>fileLastAccessed</rdfs:label>
    <rdfs:comment>Time when the file was last accessed.</rdfs:comment>
    <rdfs:domain rdf:resource="http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#File"/>
    <rdfs:range rdf:resource="&xsd;dateTime"/>
</owl:DatatypeProperty>
...
...

以上是我在保护中开发的本体论的一部分。

您可以看到#fileName属性的数据类型为&xsd;string#fileLastAccessed的数据类型为&xsd;dateTime

我正在开发一个应用程序,我需要以编程方式读取属性的数据类型。

我的问题是我如何以编程方式知道属性的数据类型。

1 个答案:

答案 0 :(得分:2)

正如您在示例本体中演示的那样,属性的范围由rdfs:range / rdf:Property实例上的owl:DatatypeProperty值指定。

假设您的Jena Model包含示例中的数据:

final Property fileName = model.getResource("http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#fileName")
                               .as(Property.class);
final StmtIterator definedRanges = fileName.listProperties(RDFS.range)

在前面的代码中,如果没有定义范围,definedRanges将是一个空的迭代器。如果它非空,则应指明您的财产范围。如果您的属性是owl:DatatypeProperty,则 应该是安全的,假设它指定了一个文字数据类型。