簡體   English   中英

SPARQL查詢以檢索類的個人

[英]SPARQL query to retrieve individuals of a class

我正在嘗試使用Java中的rdf:type Jena檢索類的個人(注意:該類沒有子類)。

數據(x個人):

A類:x1,x2,x3,x4 B類:x5,x6,x7,x8 C類:x9,x10,x11,x12

對象屬性:z1(帶有B的CLASS A),z2(帶有C的CLASS A),z3(帶有C的CLASS B)

rdf:CLassA類型的結果:

在Protege中:x1,x2,x3,x4在通過耶拿的Eclipse中:x1,x2,x3,x4,x5,x6,x7,x8,x9 ....

Select ?x
where { ?x rdf:type :ClassA }

在本體編輯器中,它可以完美運行。 但是,在Java中,當我執行查詢時,我也會得到不屬於該類的個人,但它們通過屬性與其中一個類個人相連。 有人知道如何解決這個問題嗎? 本體是正確的。

  • 我正在使用Eclipse作為Java中的編輯器
  • 我正在使用Protege構建本體

Eclipse /耶拿:

PropertyConfigurator.configure("D:\\apache-jena-2.10.1\\jena-log4j.properties");
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF);
FileManager.get().readModel( model, "file:.owl" );

String queryString =
    "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " +        
    "PREFIX owl: <http://www.w3.org/2002/07/owl#> " +
    "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> " +
    "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> " +
    "PREFIX bio: <http://www.semanticweb.org/vassilis/ontologies/2013/5/Bio#> " +

    " SELECT ?x " +
    " WHERE { ?x rdf:type bio:Class } " ;

Query query = QueryFactory.create(queryString);
QueryExecution qe= QueryExecutionFactory.create(query, model);
com.hp.hpl.jena.query.ResultSet resultset = qe.execSelect();
ResultSetFormatter.out(System.out, resultset, query);

Protégé:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>       
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX bio: <http://www.semanticweb.org/vassilis/ontologies/2013/5/Bio#> 

SELECT ?x 
WHERE { ?x rdf:type bio:ClassA }

如果本體是正確的,那么您可以向我們展示您的代碼嗎?

你確定“:Class”是正確的嗎?

如果默認名稱空間是owl或其他詞匯表,則有可能返回使用該詞匯表的所有個人,或者Jena中使用的推理規則可能有所不同。 這是一個假設。

如果將z3的域設置為CLASS A,則檢查z3中的exampla的數據類型屬性的域和范圍,盡管您在z3中將該個人指定為B類個體,但將每個參與此屬性的個人都視為A類成員。你的本體

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM