我试图通过我在java中创建的接口删除实例的数据类型属性的值,但它不起作用.它给了我一个
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException.
Run Code Online (Sandbox Code Playgroud)
我不明白为什么.你能解释一下我有什么问题吗?
这是我删除按钮的代码:
//Button Remove
public class ActionRemove implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
StmtIterator iter = onto.model.listStatements();
while (iter.hasNext())
{
Statement stmt = iter.nextStatement();
Resource subject = stmt.getSubject();
Property predicate = stmt.getPredicate();
RDFNode object = stmt.getObject();
if(subject.toString().equals (onto.uriBase+"#"+tabTF[0].getText()))
{
onto.model.remove(stmt);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的完整代码:
import java.util.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.ontology.impl.*;
import com.hp.hpl.jena.util.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import com.hp.hpl.jena.vocabulary.RDF;
import com.hp.hpl.jena.vocabulary.XSD;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
public class FamilyModel extends Frame …Run Code Online (Sandbox Code Playgroud) 我是RDF的新手,或许,我的问题太愚蠢了.
我有以下工作流程,我试图将其表示为RDF.我理解RDF背后的理论及其用途,但我仍然坚持如何开始为这个图创建一个RDF.我将不胜感激任何帮助.
提前致谢.
〜Codera

我寻找一个明确的OWL解决方案来定义一个属性,该属性是另一个属性的限制,类似于等价的类.限制基于域或范围的数据属性.受限制的财产绝对是一个子财产,必须推断.
"孩子","母亲","父亲"是人的父亲.gender ="男性"数据属性mother.gender ="女性"
(男性子类人员=等同类别"性别价值"男性")
父亲父母或儿童'对象关系母亲父母子女'对象关系
如何定义fatherOf属性,基于parentOf和父亲的性别?显然,它是parentOf的子属性.
但是,Protégé中的等效对象属性编辑器不允许设置属性查询,即使我不知道这是否可以通过属性链解决.
将fatherOf定义为subproperty并且(手动)设置fatherOf而不是parentOf不是一个选项,因为这个系列示例是更复杂场景的简化情况.
<Declaration>
<Class IRI="#Person"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#fatherOf"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#parentOf"/>
</Declaration>
<Declaration>
<DataProperty IRI="#gender"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#father"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#kid"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#mother"/>
</Declaration>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#father"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#kid"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#mother"/>
</ClassAssertion>
<ObjectPropertyAssertion>
<ObjectProperty IRI="#parentOf"/>
<NamedIndividual IRI="#father"/>
<NamedIndividual IRI="#kid"/>
</ObjectPropertyAssertion>
<ObjectPropertyAssertion>
<ObjectProperty IRI="#parentOf"/>
<NamedIndividual IRI="#mother"/>
<NamedIndividual IRI="#kid"/>
</ObjectPropertyAssertion>
<DataPropertyAssertion>
<DataProperty IRI="#gender"/>
<NamedIndividual IRI="#father"/>
<Literal datatypeIRI="&rdf;PlainLiteral">male</Literal>
</DataPropertyAssertion>
<DataPropertyAssertion> …Run Code Online (Sandbox Code Playgroud) 我试图使用Protege3.x在本体中添加属性限制.
我在指定限制内的枚举时遇到问题.例如,尝试指定枚举以这种方式限制可能的数据元素:

它将整个表达式视为单个字符串:

在另一个例子中,我试图通过使用多个表达式和它们之间的"或"来解决问题,这似乎是合适的.但在前一个版本中,不允许使用"或".

如何使用枚举来满足这种需求?谢谢!
我正在尝试在国家和城市的OWL中构建一个本体(如果已经存在这样的实现,请指向我)
为了获取数据,我正在尝试使用带有以下代码的sparql:
SELECT ?c WHERE {
?c rdfs:label ?name .
?c dbpedia-owl:country <http://dbpedia.org/resource/Country> .
}
Run Code Online (Sandbox Code Playgroud)
我是sparql和dbpedia的新手.上面的代码并没有让我回到所有城市和他们所在的国家.我真的需要使用dbpedia来实现这一目标.
有什么建议吗?
我有一个简单的本体如下
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<!ENTITY assignment "http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#" >
]>
<rdf:RDF xmlns="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#"
xml:base="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:assignment="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<owl:Ontology rdf:about="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Object Properties
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#channel_of -->
<owl:ObjectProperty rdf:about="&assignment;channel_of">
<rdfs:domain rdf:resource="&assignment;Channels"/>
<rdfs:range rdf:resource="&assignment;Television"/>
<owl:inverseOf rdf:resource="&assignment;has_channels"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_channels -->
<owl:ObjectProperty rdf:about="&assignment;has_channels">
<rdfs:range rdf:resource="&assignment;Channels"/>
<rdfs:domain rdf:resource="&assignment;Television"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_inet_connection -->
<owl:ObjectProperty rdf:about="&assignment;has_inet_connection">
<rdfs:range rdf:resource="&assignment;InternetConnection"/>
<rdfs:domain rdf:resource="&assignment;Person"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_television …Run Code Online (Sandbox Code Playgroud) 假设我正在为家庭关系定义一个OWL本体,我已经定义了"姐妹"和"父母"之间的关系.我现在想定义一个关系"阿姨",并指定这种关系是由另外两个链的隐含.换句话说:如果X"姐妹 - "Y,和Y"父母 - "Z,那么X"阿姨 - "Z.
有没有办法做到这一点?它类似owl:TransitiveProperty但显然不起作用.在定义属性之间的关系方面,它与"owl:inverseOf"具有相同的一般性.
我想我正在寻找的是一种指定一个属性(在本例中为"aunt-of")是其他属性的组合的方法,但我仍然无法在OWL中找到一种方法.
我在使用与Jena的SPARQL查询时尝试以更易读的格式获取数据,但是我不知道如何以正确的方式提取数据.至于现在,输出是:
" http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#SaucelitoCanyon "
相反,我想把"SaucelitoCanyon"作为输出.
public JenaQuery() {
String wineRegion = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
+ "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"
+ "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\n"
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"
+ "PREFIX wine:<http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#>\n"
+ "SELECT ?region ?winery \n"
+ "WHERE {?wine wine:locatedIn ?region . \n"
+ "?region wine:locatedIn wine:CaliforniaRegion . \n"
+ "?wine wine:hasMaker ?winery}";
String inputFileName = "wine.rdf";
// create an empty model
Model model = ModelFactory.createDefaultModel();
// use the FileManager to find the input file
InputStream in;
in = FileManager.get().open(inputFileName);
if (in …Run Code Online (Sandbox Code Playgroud) 我有一个本体(dgo.owl)和一个简单的程序(SparqlQuery.java)来查询相同的本体.在运行查询时,我没有得到任何结果.经过长时间的调试后,我认为将它放入社区是件好事.
查询脚本如下:
OntModel ontmodque = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
InputStream in=FileManager.get().open("ontologies/dgo.owl");
if (ontmodque.isEmpty())
{
ontmodque.read(in,"RDF/XML");
}
String qr= "PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>\n" +
"PREFIX dgo: <http://www.iiitd.edu.in/~haroonr/ontologies/DGO#>\n" +
"SELECT \n"+
"?property \n"+
"WHERE\n"+
"{ \n"+
"dgo:DiningRoom ssn:hasProperty ?property .\n " +
"}";
Query qy = QueryFactory.create(qr);
QueryExecution qe = QueryExecutionFactory.create(qy,ontmodque);
ResultSet rs= qe.execSelect();
ResultSetFormatter.out(System.out, rs, qy) ;
ontmodque.close();
qe.close();
Run Code Online (Sandbox Code Playgroud)
获得的输出是:

我知道hasProperty对象关系存在于所述本体中.此外,DiningRoom的可能属性应返回Illuminance,Temperature,Co2Content,AbsoluteHumidity.
这是我用protege 5创建的本体论.
如果我做cl1和cl2不相交,那么本体就是不一致的,但是如果我取消is_friend_of反复,那么本体就不再是不一致了.什么是我的本体错误?
我只希望cl1班上的人拥有is_friend_of财产.