簡體   English   中英

我該如何找回 <oboInOwl:hasExactSynonym> 從每個 <rdf:Description> 使用OWL API

[英]How can I retrieve <oboInOwl:hasExactSynonym> from every <rdf:Description> using OWL API

我是OWL API的新手,因此我在檢索數據時遇到一些問題。

假設我有以下數據:

 <rdf:Description rdf:about="http://purl.obolibrary.org/obo/GO_0044297"> <oboInOwl:creation_date>"2010-02-05T10:37:16Z"</oboInOwl:creation_date> <obo:IAO_0000115>"The portion of a cell bearing surface projections such as axons, dendrites, cilia, or flagella that includes the nucleus, but excludes all cell projections."</obo:IAO_0000115> <oboInOwl:hasOBONamespace>"cellular_component"</oboInOwl:hasOBONamespace> <oboInOwl:hasDbXref>"Wikipedia:Cell_body"</oboInOwl:hasDbXref> <oboInOwl:hasDbXref>"FMA:67301"</oboInOwl:hasDbXref> <oboInOwl:hasExactSynonym>"cell soma"</oboInOwl:hasExactSynonym> <rdfs:label>"cell body"</rdfs:label> <rdfs:subClassOf>http://purl.obolibrary.org/obo/GO_0044464</rdfs:subClassOf> <oboInOwl:hasDbXref>"FBbt:00005107"</oboInOwl:hasDbXref> <rdf:type>http://www.w3.org/2002/07/owl#Class</rdf:type> <oboInOwl:id>"GO:0044297"</oboInOwl:id> <rdfs:comment>"Note that 'cell body' and 'cell soma' are not used in the literature for cells that lack projections, nor for some cells (eg yeast with mating projections) that do have projections."</rdfs:comment> <oboInOwl:created_by>"xyz"</oboInOwl:created_by> <oboInOwl:inSubset>http://purl.obolibrary.org/obo/go#goslim_pir</oboInOwl:inSubset> </rdf:Description> <rdf:Description rdf:about="http://purl.obolibrary.org/obo/GO_0071509"> <oboInOwl:hasRelatedSynonym>"activation of MAPKK activity involved in mating response"</oboInOwl:hasRelatedSynonym> <rdfs:subClassOf>http://purl.obolibrary.org/obo/GO_0090028</rdfs:subClassOf> <oboInOwl:hasOBONamespace>"biological_process"</oboInOwl:hasOBONamespace> <oboInOwl:hasExactSynonym>"activation of MAP kinase kinase activity during conjugation with cellular fusion"</oboInOwl:hasExactSynonym> <oboInOwl:hasExactSynonym>"conjugation with cellular fusion, activation of MAPKK activity"</oboInOwl:hasExactSynonym> <rdfs:label>"activation of MAPKK activity involved in conjugation with cellular fusion"</rdfs:label> <rdf:type>http://www.w3.org/2002/07/owl#Class</rdf:type> <oboInOwl:id>"GO:0071509"</oboInOwl:id> <oboInOwl:creation_date>"2010-01-05T02:09:58Z"</oboInOwl:creation_date> <oboInOwl:hasExactSynonym>"conjugation with cellular fusion, activation of MAP kinase kinase activity"</oboInOwl:hasExactSynonym> <oboInOwl:created_by>"midori"</oboInOwl:created_by> <obo:IAO_0000115>"Any process that initiates the activity of the inactive enzyme MAP kinase kinase in the context of conjugation with cellular fusion."</obo:IAO_0000115> <rdfs:subClassOf>http://purl.obolibrary.org/obo/GO_0000186</rdfs:subClassOf> </rdf:Description> 

對於每個“ rdf:description”,我想使用Java中的OWL API檢索其對應的“ rdf:label”,“ oboInOwl:hasExactSynonym”和“ rdfs:subClassOf”。

到目前為止,我可以獲取所有標簽,但無法獲得關於哪個標簽用於哪個描述的鏈接。

目前,我的代碼如下:

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
        OWLOntology pizzaOntology = manager.loadOntologyFromOntologyDocument(f);
        Set<OWLOntology> allOntologies = manager.getImportsClosure(pizzaOntology);
        //System.out.println(allOntologies);
        OWLReasonerFactory reasonerFactory = new ElkReasonerFactory();
        OWLReasoner reasoner = reasonerFactory.createReasoner(pizzaOntology);
        //pizzaOntology
        OWLDataFactory factory = manager.getOWLDataFactory();

        Set<OWLAxiom> axiom = pizzaOntology.getAxioms();
        for (OWLAxiom o : axiom) {
            AxiomType<?> at = o.getAxiomType();
            //System.out.println("Annotation type is "+at+" for "+o);

            if (at == AxiomType.ANNOTATION_ASSERTION) {
                OWLAnnotationAssertionAxiom ax = (OWLAnnotationAssertionAxiom) o;
                //Check if the axiom is a label and write to file
                if(ax.getProperty().toString().contains("hasExactSynonym"))
                System.out.println("Data is "+ax.getValue().toString());
                if (ax.getProperty().equals(factory.getRDFSLabel())) {
                    String label = ax.getValue().toString();
                    label = label.toLowerCase();
                    label = label.replaceAll("[^\\p{L}\\p{Nd}]+", " ");
                    allLabels.add(label);
                }
            }

        }

有人可以幫我一些想法嗎?

這應該有助於:

    OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    OWLOntology pizzaOntology = manager.loadOntologyFromOntologyDocument(f);
    Set<OWLOntology> allOntologies = manager.getImportsClosure(pizzaOntology);
    // System.out.println(allOntologies);
    OWLReasonerFactory reasonerFactory = new ElkReasonerFactory();
    OWLReasoner reasoner = reasonerFactory.createReasoner(pizzaOntology);
    // pizzaOntology
    OWLDataFactory factory = manager.getOWLDataFactory();
    Map<OWLAnnotationSubject, String> allLabels = new HashMap<>();
    Map<OWLAnnotationSubject, String> allExactSynonyms = new HashMap<>();
    for (OWLAnnotationAssertionAxiom ax : pizzaOntology
        .getAxioms(AxiomType.ANNOTATION_ASSERTION)) {
        // Check if the axiom is a label and write to file
        OWLAnnotationSubject subject = ax.getSubject();
        if (ax.getProperty().toString().contains("hasExactSynonym")) {
            allExactSynonyms.put(subject, ax.getValue().toString());
        }
        if (ax.getProperty().equals(factory.getRDFSLabel())) {
            String label = ax.getValue().toString();
            label = label.toLowerCase();
            label = label.replaceAll("[^\\p{L}\\p{Nd}]+", " ");
            allLabels.put(subject, label);
        }
    }

這兩個映射保持IRI(在這種情況下,注釋主體始終是IRI-注釋附加到類的IRI,而不是類本身)與屬性值之間的關系。 如果將標簽值與IRI的屬性值匹配,則可以通過IRI在地圖中找到其他值。

暫無
暫無

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

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