我使用 Jena API 创建了一个本体,其中包含以下类和 DataType 属性:
public class Onto {
OntClass USER,...;
OntModel model;
String uriBase;
DatatypeProperty Name,Surname,..;
ObjectProperty has_EDUCATION_LEVEL;
public Onto (){
model = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF );
uriBase = "http://www.something.com/";
model.createOntology(uriBase);
//Classes
USER=model.createClass(uriBase+"USER");
...
//DatatTypesProperties
Name= model.createDatatypeProperty(uriBase+"Name");
Name.setDomain(USER_AUTNENTIFICATION);
Name.setRange(XSD.xstring);
Surname= model.createDatatypeProperty(uriBase+"Surname");
Surname.setDomain(USER_AUTNENTIFICATION);
Surname.setRange(XSD.xstring);
...
//ObjectProperties
has_EDUCATION_LEVEL= model.createObjectProperty(uriBase+"has_EDUCATION_LEVEL");
has_EDUCATION_LEVEL.setDomain(USER);
has_EDUCATION_LEVEL.setRange(EDUCATION_LEVEL);}
然后我创建了“USER”类的实例,我在其中插入了一些数据类型属性“Name”和“Surname”通过Web 的值。我的代码输出是一个 .owl 文件。但是当我用 Protege 阅读它时,我发现我所有的 Data Properties ,我的 Object Properties 甚至我的类都包含两个前缀 j.1 和 j.0 。这是我在 OWL 文件中的实例的代码:
<j.1:USER rdf:about="http://www.something.com/#Jhon">
<j.0:has_EDUCATION_LEVEL rdf:resource="http://www.something.com/HIGH_EDUCATION_LEVEL"/>
<j.0:Surname>Smith</j.0:Surname>
<j.0:Name>Jhon</j.0:Name>
</j.1:USER>
我会感谢任何帮助或建议