使用 OntProperty 和 DatatypeProperty - Jena Ontology
Posted
技术标签:
【中文标题】使用 OntProperty 和 DatatypeProperty - Jena Ontology【英文标题】:Using OntProperty and DatatypeProperty - Jena Ontology 【发布时间】:2012-08-27 23:08:04 【问题描述】: OntModel onto = ModelFactory.createOntologyModel(
OntModelSpec.OWL_MEM_MICRO_RULE_INF, null );
String inputFileName = "./src/test.xml";
InputStream in = FileManager.get().open(inputFileName);
if (in == null)
throw new IllegalArgumentException( "File: " + inputFileName + " not found");
onto.read(new InputStreamReader(in), "");
//ns is the namespace...
OntClass userClass = onto.getOntClass(ns+"User");
Individual dada = onto.createIndividual(ns+"Daryl", userClass);
Property prefBathtub = onto.getProperty(ns+"prefersBathtub");
Property prefBathtubWt = onto.getProperty(ns+"prefersBathtubWeight");
dada.addLiteral(prefBathtub, true);
dada.addLiteral(prefBathtubWt, 0.30);
OutputStream out = new FileOutputStream("./src/test2.xml");
onto.write( out, "RDF/XML"); // readable rdf/xml
out.close();
如何使用 OntProperty 和/或 DatatypeProperty 而不仅仅是 Property?
通过使用属性,我可以获得相同的表现力吗?
【问题讨论】:
【参考方案1】:要从本体模型中获取ObjectProperty
对象,请使用OntModel.getObjectProperty
()。对于数据类型属性等也是如此。Ont
类在某种意义上更具表现力,因为它们包含方便的 API,例如,通过一个方法调用来获取属性的超属性。但是,由于便捷 API 仅访问图中的底层三元组,严格来说,您无法使用 ObjectProperty
做任何事情,而您无法使用 Property
做任何事情。这只是更难的工作!
顺便说一下,Jena 允许您使用 .as()
方法访问底层 RDF 资源的其他方面。所以:
Property p = myModel.getProperty( "http://example.com/foo#p" );
OntProperty op = p.as( OntProperty.class );
【讨论】:
您提到的 .as() 方法是一种方便的类似“转换”的工具,用于使其成为 OntProperty。谢谢伊恩!以上是关于使用 OntProperty 和 DatatypeProperty - Jena Ontology的主要内容,如果未能解决你的问题,请参考以下文章
哪种 DATATYPE 更适合使用 TEXT 或 VARCHAR?
哪种 DATATYPE 更适合使用 TEXT 或 VARCHAR?
jquery ajax中的DataType vs ContentType [重复]
我们如何从 getchemaTable 中获取 Column Size 和 dataType?