- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 OWL API 示例中使用的本体。
private static final String KOALA = "<?xml version=\"1.0\"?>\n"
+ "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns=\"http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#\" xml:base=\"http://protege.stanford.edu/plugins/owl/owl-library/koala.owl\">\n"
+ " <owl:Ontology rdf:about=\"\"/>\n"
+ " <owl:Class rdf:ID=\"Female\"><owl:equivalentClass><owl:Restriction><owl:onProperty><owl:FunctionalProperty rdf:about=\"#hasGender\"/></owl:onProperty><owl:hasValue><Gender rdf:ID=\"female\"/></owl:hasValue></owl:Restriction></owl:equivalentClass></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Marsupials\"><owl:disjointWith><owl:Class rdf:about=\"#Person\"/></owl:disjointWith><rdfs:subClassOf><owl:Class rdf:about=\"#Animal\"/></rdfs:subClassOf></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Student\"><owl:equivalentClass><owl:Class><owl:intersectionOf rdf:parseType=\"Collection\"><owl:Class rdf:about=\"#Person\"/><owl:Restriction><owl:onProperty><owl:FunctionalProperty rdf:about=\"#isHardWorking\"/></owl:onProperty><owl:hasValue rdf:datatype=\"http://www.w3.org/2001/XMLSchema#boolean\">true</owl:hasValue></owl:Restriction><owl:Restriction><owl:someValuesFrom><owl:Class rdf:about=\"#University\"/></owl:someValuesFrom><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasHabitat\"/></owl:onProperty></owl:Restriction></owl:intersectionOf></owl:Class></owl:equivalentClass></owl:Class>\n"
+ " <owl:Class rdf:ID=\"KoalaWithPhD\"><owl:versionInfo>1.2</owl:versionInfo><owl:equivalentClass><owl:Class><owl:intersectionOf rdf:parseType=\"Collection\"><owl:Restriction><owl:hasValue><Degree rdf:ID=\"PhD\"/></owl:hasValue><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasDegree\"/></owl:onProperty></owl:Restriction><owl:Class rdf:about=\"#Koala\"/></owl:intersectionOf></owl:Class></owl:equivalentClass></owl:Class>\n"
+ " <owl:Class rdf:ID=\"University\"><rdfs:subClassOf><owl:Class rdf:ID=\"Habitat\"/></rdfs:subClassOf></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Koala\"><rdfs:subClassOf><owl:Restriction><owl:hasValue rdf:datatype=\"http://www.w3.org/2001/XMLSchema#boolean\">false</owl:hasValue><owl:onProperty><owl:FunctionalProperty rdf:about=\"#isHardWorking\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf><owl:Restriction><owl:someValuesFrom><owl:Class rdf:about=\"#DryEucalyptForest\"/></owl:someValuesFrom><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasHabitat\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf rdf:resource=\"#Marsupials\"/></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Animal\"><rdfs:seeAlso>Male</rdfs:seeAlso><rdfs:subClassOf><owl:Restriction><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasHabitat\"/></owl:onProperty><owl:minCardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#int\">1</owl:minCardinality></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf><owl:Restriction><owl:cardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#int\">1</owl:cardinality><owl:onProperty><owl:FunctionalProperty rdf:about=\"#hasGender\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf><owl:versionInfo>1.1</owl:versionInfo></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Forest\"><rdfs:subClassOf rdf:resource=\"#Habitat\"/></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Rainforest\"><rdfs:subClassOf rdf:resource=\"#Forest\"/></owl:Class>\n"
+ " <owl:Class rdf:ID=\"GraduateStudent\"><rdfs:subClassOf><owl:Restriction><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasDegree\"/></owl:onProperty><owl:someValuesFrom><owl:Class><owl:oneOf rdf:parseType=\"Collection\"><Degree rdf:ID=\"BA\"/><Degree rdf:ID=\"BS\"/></owl:oneOf></owl:Class></owl:someValuesFrom></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf rdf:resource=\"#Student\"/></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Parent\"><owl:equivalentClass><owl:Class><owl:intersectionOf rdf:parseType=\"Collection\"><owl:Class rdf:about=\"#Animal\"/><owl:Restriction><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasChildren\"/></owl:onProperty><owl:minCardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#int\">1</owl:minCardinality></owl:Restriction></owl:intersectionOf></owl:Class></owl:equivalentClass><rdfs:subClassOf rdf:resource=\"#Animal\"/></owl:Class>\n"
+ " <owl:Class rdf:ID=\"DryEucalyptForest\"><rdfs:subClassOf rdf:resource=\"#Forest\"/></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Quokka\"><rdfs:subClassOf><owl:Restriction><owl:hasValue rdf:datatype=\"http://www.w3.org/2001/XMLSchema#boolean\">true</owl:hasValue><owl:onProperty><owl:FunctionalProperty rdf:about=\"#isHardWorking\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf rdf:resource=\"#Marsupials\"/></owl:Class>\n"
+ " <owl:Class rdf:ID=\"TasmanianDevil\"><rdfs:subClassOf rdf:resource=\"#Marsupials\"/></owl:Class>\n"
+ " <owl:Class rdf:ID=\"MaleStudentWith3Daughters\"><owl:equivalentClass><owl:Class><owl:intersectionOf rdf:parseType=\"Collection\"><owl:Class rdf:about=\"#Student\"/><owl:Restriction><owl:onProperty><owl:FunctionalProperty rdf:about=\"#hasGender\"/></owl:onProperty><owl:hasValue><Gender rdf:ID=\"male\"/></owl:hasValue></owl:Restriction><owl:Restriction><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasChildren\"/></owl:onProperty><owl:cardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#int\">3</owl:cardinality></owl:Restriction><owl:Restriction><owl:allValuesFrom rdf:resource=\"#Female\"/><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasChildren\"/></owl:onProperty></owl:Restriction></owl:intersectionOf></owl:Class></owl:equivalentClass></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Degree\"/>\n <owl:Class rdf:ID=\"Gender\"/>\n"
+ " <owl:Class rdf:ID=\"Male\"><owl:equivalentClass><owl:Restriction><owl:hasValue rdf:resource=\"#male\"/><owl:onProperty><owl:FunctionalProperty rdf:about=\"#hasGender\"/></owl:onProperty></owl:Restriction></owl:equivalentClass></owl:Class>\n"
+ " <owl:Class rdf:ID=\"Person\"><rdfs:subClassOf rdf:resource=\"#Animal\"/><owl:disjointWith rdf:resource=\"#Marsupials\"/></owl:Class>\n"
+ " <owl:ObjectProperty rdf:ID=\"hasHabitat\"><rdfs:range rdf:resource=\"#Habitat\"/><rdfs:domain rdf:resource=\"#Animal\"/></owl:ObjectProperty>\n"
+ " <owl:ObjectProperty rdf:ID=\"hasDegree\"><rdfs:domain rdf:resource=\"#Person\"/><rdfs:range rdf:resource=\"#Degree\"/></owl:ObjectProperty>\n"
+ " <owl:ObjectProperty rdf:ID=\"hasChildren\"><rdfs:range rdf:resource=\"#Animal\"/><rdfs:domain rdf:resource=\"#Animal\"/></owl:ObjectProperty>\n"
+ " <owl:FunctionalProperty rdf:ID=\"hasGender\"><rdfs:range rdf:resource=\"#Gender\"/><rdf:type rdf:resource=\"http://www.w3.org/2002/07/owl#ObjectProperty\"/><rdfs:domain rdf:resource=\"#Animal\"/></owl:FunctionalProperty>\n"
+ " <owl:FunctionalProperty rdf:ID=\"isHardWorking\"><rdfs:range rdf:resource=\"http://www.w3.org/2001/XMLSchema#boolean\"/><rdfs:domain rdf:resource=\"#Person\"/><rdf:type rdf:resource=\"http://www.w3.org/2002/07/owl#DatatypeProperty\"/></owl:FunctionalProperty>\n"
+ " <Degree rdf:ID=\"MA\"/>\n</rdf:RDF>";
我使用此代码( https://neo4j.com/blog/using-owl-with-neo4j/ )来查询 owl 本体:
OWLReasoner reasoner = reasonerFactory.createNonBufferingReasoner(ontology);
if (!reasoner.isConsistent()) {
logger.log(Level.INFO, "Ontology is inconsistent");
//throw your exception of choice here
throw new Exception("Ontology is inconsistent");
}
try{
// Node thingNode = getOrCreateNodeWithUniqueFactory("owl:Thing");
for (OWLClass c :ontology.getClassesInSignature(true)) {
String classString = c.toString();
if (classString.contains("#")) {
classString = classString.substring(
classString.indexOf("#")+1,classString.lastIndexOf(">"));
}
System.out.println("classString: "+classString);
// Node classNode = getOrCreateNodeWithUniqueFactory(classString);
NodeSet<OWLClass> superclasses = reasoner.getSuperClasses(c, true);
if (superclasses.isEmpty()) {
//classNode.createRelationshipTo(thingNode,DynamicRelationshipType.withName("isA"));
} else {
for (org.semanticweb.owlapi.reasoner.Node<OWLClass>
parentOWLNode: superclasses) {
OWLClassExpression parent = parentOWLNode.getRepresentativeElement();
String parentString = parent.toString();
if (parentString.contains("#")) {
parentString = parentString.substring(
parentString.indexOf("#")+1,
parentString.lastIndexOf(">"));
}
System.out.println("parentString: "+parentString);
// Node parentNode = getOrCreateNodeWithUniqueFactory(parentString);
// classNode.createRelationshipTo(parentNode, DynamicRelationshipType.withName("isA"));
}
}
for (org.semanticweb.owlapi.reasoner.Node<OWLNamedIndividual> in
: reasoner.getInstances(c, true)) {
OWLNamedIndividual i = in.getRepresentativeElement();
String indString = i.toString();
if (indString.contains("#")) {
indString = indString.substring(
indString.indexOf("#")+1,indString.lastIndexOf(">"));
}
System.out.println("indString: "+indString);
// Node individualNode = getOrCreateNodeWithUniqueFactory(indString);
// individualNode.createRelationshipTo(classNode, DynamicRelationshipType.withName("isA"));
for (OWLObjectPropertyExpression objectProperty:
ontology.getObjectPropertiesInSignature()) { System.out.println("objectProperty: "+objectProperty);
for
(org.semanticweb.owlapi.reasoner.Node<OWLNamedIndividual>
object: reasoner.getObjectPropertyValues(i,
objectProperty)) {
String reltype = objectProperty.toString();
reltype = reltype.substring(reltype.indexOf("#")+1,
reltype.lastIndexOf(">"));
String s =
object.getRepresentativeElement().toString();
s = s.substring(s.indexOf("#")+1,
s.lastIndexOf(">"));
System.out.println("reltype: "+reltype+" s: "+s);
// Node objectNode = getOrCreateNodeWithUniqueFactory(s);
// individualNode.createRelationshipTo(objectNode, DynamicRelationshipType.withName(reltype));
}
}
for (OWLDataPropertyExpression dataProperty:
ontology.getDataPropertiesInSignature()) { System.out.println("dataProperty: "+dataProperty.asOWLDataProperty());
for (OWLLiteral object: reasoner.getDataPropertyValues(
i, dataProperty.asOWLDataProperty())) {
String reltype =
dataProperty.asOWLDataProperty().toString();
reltype = reltype.substring(reltype.indexOf("#")+1,
reltype.lastIndexOf(">"));
String s = object.toString();
System.out.println("reltype: "+reltype+" s: "+s);
// individualNode.setProperty(reltype, s);
}
}
}
}
但我观察到它不会返回指定的个体和对象属性表达式的对象属性值。
reasoner.getObjectPropertyValues(i, objectProperty)
不返回任何项目。为什么?
正如我在其他帖子中读到的那样,我什至尝试了其他 Reasoner(HermiT、Pellet),但结果没有改变。怎么解决呢?
最佳答案
您正在使用的本体中没有断言对象属性;所以推理者什么也没找到,因为没有什么可找到的。
加载本体后添加以下代码,以便您可以测试您的代码。
final OWLDataFactory factory = manager.getOWLDataFactory();
ontology.add(factory.getOWLObjectPropertyAssertionAxiom(factory.getOWLObjectProperty("#HelloWorldProperty"), factory.getOWLNamedIndividual("#FirstIndividual"), factory.getOWLNamedIndividual("#SecondIndividual")));
reasoner.flush();
您的代码看起来不错,但有点复杂。您可以使用“getFlattened()”获得更短的代码
for (final OWLNamedIndividual i : reasoner.getInstances(c, true).getFlattened())
关于java - 通过 OWL API 查询 OWL 本体时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606072/
我正在使用 Protege v4.3 制作本体。 我有一个关于 OWL 本体和 DL 查询的问题。 例如,在 Pizza 本体中, http://owl.cs.manchester.ac.uk/co-
我已经用Protege用OWL编写了一个本体论。但是我找不到在类之间创建关系的解决方案。当然,有一个“子类”关系,但是我想定义自己的关系。所以我有一个类层次结构(由“子类”-关系组成),但我想创建一个
我正在使用等同于 dbpedia-owl:Organisation 的专有 rdfs:type 在我的 SPARQL 查询中选择(显然)组织: SELECT ?s WHERE { ?s
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我正在建立一个旅游网站,并希望在其中使用语义网。我也对使用 RDF 本体感兴趣。 所以,我想知道是否有人可以告诉我,是否存在任何关于此的内容,如“这家酒店位于 Foo”或“这家餐厅在 Foo 社区的评
我正在尝试使用 Jena API 复制 OWL 本体,每次都向该本体添加一个新语句。但一开始它应该得到原始本体,没有新的语句。 以下代码每次都会在前一个语句之上添加一个新语句。 this runs i
我正在使用具有以下简单本体的 Protege 4.3(也尝试过 5-beta): Class: Person Class: Man SubClassOf: Person Ind
我在 Protege 中为一个小项目创建了一个本体,我在 csv 文件中有与域相关的数据集。 Protege中如何将类的所有个体都导入到本体中,使所有的个体都自动添加到本体中? 最佳答案 proteg
我正在尝试基于以 XMI 格式呈现的不同 UML 文件资源开发 OWL 本体。现在通过互联网阅读了一段时间,似乎几乎所有可用的工具或方法都已过时,即使尝试其中的一些工具或方法,它们也无法提供预期的结果
我正在尝试制作一个关于我所在地区运行比赛(10 公里、半程马拉松、马拉松)的语义 Web 应用程序。更具体地说,我想收集和发布(在 RDF 中)关于比赛、参与者和结果的数据,并合并类似的数据。过去几周
过去几个小时,我在谷歌上搜索了有关如何使用 virtuoso 服务器(开源版本)配置 RDF 存储的教程或指南。 我有一个用 Protégé 软件创建的 RDF 文件。如何将此文件添加到 virtuo
我正在使用 SUMO我想用 SPARQL 查询的本体。 SUMO 中的一个典型条目,例如,一个城市,看起来像这样: The City of Madrid in Spain. [...
我是第一次使用 OWL API(出于兼容性原因,使用 3.4.8),并且我正在尝试加载作为 YAGO 知识库 (http://resources.mpi-inf.mpg.de/yago-naga/ya
我已经完整下载了 wordnet2.0,但我不知道如何将它用作图表,因为它由多个 RDF 文件组成。我想在 Eclipse 中使用 wordnet2.0 本体作为图形。以下是我用于将本体加载为图表的代
我这学期有一个实践研讨会,我想在 Android 应用程序上使用本体。我选择 Protege owl ontology 作为本体 API,这个工具在普通的 Java 项目中工作。但是当我试图在 And
首先,我试图用来自 Schema.org 的属性定义数据库表,例如,例如,我有一个名为“JobPosting”的表,它或多或少具有与 http://schema.org/JobPosting 中定义的
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我正在尝试制作一个关于我所在地区运行比赛(10k、半程马拉松、马拉松)的语义 Web 应用程序。更具体地说,我想收集和发布(在 RDF 中)有关比赛、参与者和结果的数据,并合并类似的数据。在过去的几周
我在 protege 中创建了一个文件系统本体。我已将文件创建日期的范围设置为日期时间,如下面的代码所示。 Time when the file was last accessed.
我正在尝试使用来自 javacode 的 sparql 查询 DBPedia对于某些查询,它可以完美地工作,而对于另一个它不起作用。我认为我的查询没有错误,因为我已经在 DBPedia aparql
我是一名优秀的程序员,十分优秀!