【问题标题】:Can anyone tell me how to extract ShortformProvider for URI label annotations using Manchester Syntax used in protege谁能告诉我如何使用 protege 中使用的曼彻斯特语法为 URI 标签注释提取 ShortformProvider
【发布时间】:2013-08-18 15:57:44
【问题描述】:

我正在实现一个从 WebProtege 中使用的 OWLEntity 的 URI 中提取实体的版本。我在这方面很成功。我可以给你看下面的代码。但我现在需要从标签注释中提取。如何使用 WebProtege 提取它。 WebProtege 在创建类时不会创建 URI(例如,http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl#Pizza)。它只有带有 URI 的标签注释。我想从标签中提取 URI。就像它一样(例如,http://www.co-ode.org/ontologies/pizza/2005/05/16/234y2890820802840> "Pizza"@en>。(有点像这样。如果您需要正确的,我会回复。)。

rootOntology = getProject().getRootOntology();
System.out.println(rootOntology.getAxioms());

final OWLDataFactory dataFactory 
  = rootOntology.getOWLOntologyManager().getOWLDataFactory();

iriShortFormProvider = new SimpleIRIShortFormProvider();
ShortFormProvider shortFormProvider = new ShortFormProvider() {

        public String getShortForm(OWLEntity owlEntity) {
                        return iriShortFormProvider.getShortForm(owlEntity.getIRI());
        }

        @Override
        public void dispose() {

        }
        };

OWLEntityChecker entityChecker 
  = new ShortFormEntityChecker(
      new BidirectionalShortFormProviderAdapter(
       Collections.singleton(rootOntology), shortFormProvider));

ManchesterOWLSyntaxEditorParser parser 
  = new ManchesterOWLSyntaxEditorParser(
      dataFactory, query);

parser.setOWLEntityChecker(entityChecker);

Set<OntologyAxiomPair> set;

try {
    set = parser.parseFrames();
    System.out.println("SET SIZE" + set.size());
    System.out.println("SET STRING" + set.toString());

    for (OntologyAxiomPair s1 : set) {

                OWLAxiom temp = s1.getAxiom();
                Set<OWLAnnotationProperty> annotation = s1.getOntology().getAnnotationPropertiesInSignature();
        Iterator itr = annotation.iterator();

                while(itr.hasNext()){
            System.out.println(s1.getOntology().getAnnotationPropertiesInSignature());
            System.out.println("ITERATOR" + itr.next());
                }

                if (temp.getAxiomType() != AxiomType.DECLARATION
                        || temp.getAxiomType() != AxiomType.SUBCLASS_OF || temp.getAxiomType() != AxiomType.DATA_PROPERTY_ASSERTION 
                        )
            res = Search(temp);             
    }

来自 WebProtege 的示例:

<!-- http://webprotege.stanford.edu/classes/BfJkwFDiEj5mduXojVHyKi -->

<owl:Class rdf:about="http://webprotege.stanford.edu/classes/BfJkwFDiEj5mduXojVHyKi">
    <rdfs:label xml:lang="en">AnimalType</rdfs:label>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
</owl:Class>



<!-- http://webprotege.stanford.edu/classes/BjSxQcpX7bOcVccVf5beN0 -->

<owl:Class rdf:about="http://webprotege.stanford.edu/classes/BjSxQcpX7bOcVccVf5beN0">
    <rdfs:label xml:lang="en">Omnivore</rdfs:label>
    <rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/classes/BfJkwFDiEj5mduXojVHyKi"/>
</owl:Class>



<!-- http://webprotege.stanford.edu/classes/CKjBW7KqdcJPRpBtk2T6WE -->

<owl:Class rdf:about="http://webprotege.stanford.edu/classes/CKjBW7KqdcJPRpBtk2T6WE">
    <rdfs:label xml:lang="en">Herbivore</rdfs:label>
    <rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/classes/BfJkwFDiEj5mduXojVHyKi"/>
</owl:Class>



<!-- http://webprotege.stanford.edu/classes/COt181AeQ0WewmOoZ0NYYF -->

<owl:Class rdf:about="http://webprotege.stanford.edu/classes/COt181AeQ0WewmOoZ0NYYF">
    <rdfs:label xml:lang="en">Fish</rdfs:label>
    <rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/classes/DfGxuPUoLBiOvyBKpUJWvr"/>
</owl:Class>



<!-- http://webprotege.stanford.edu/classes/CPp9DIflV676wmq3onRsJa -->

<owl:Class rdf:about="http://webprotege.stanford.edu/classes/CPp9DIflV676wmq3onRsJa">
    <rdfs:label xml:lang="en">Land</rdfs:label>
    <rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/classes/7V0PYXjh6vM9AjTzh9DPwC"/>
</owl:Class>



<!-- http://webprotege.stanford.edu/classes/DfGxuPUoLBiOvyBKpUJWvr -->

<owl:Class rdf:about="http://webprotege.stanford.edu/classes/DfGxuPUoLBiOvyBKpUJWvr">
    <rdfs:label xml:lang="en">Animal</rdfs:label>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
</owl:Class>

【问题讨论】:

  • 我是否正确理解 WebProtege 不允许您指定您创建的类和个人的 URI?更新:我刚玩过 WebProtege,看起来确实如此。这让我非常感到惊讶;不能指定 URI 的 OWL 工具不是很有用。我希望我们只是在这里遗漏了一些东西。
  • @Joshua,是的,没错。我们无法获得完整的 URI。

标签: gwt semantics owl protege


【解决方案1】:

这就是您获得标签的方式。虽然 URI 确实更可取,但标签也是可行的。您可以将这些标签提供给曼彻斯特语法查询。我建议重写您的查询。

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    File file= new File("root-ontology.owl");

    OWLOntology rootOntology = manager.loadOntologyFromOntologyDocument(file);

    OWLDataFactory df  = rootOntology.getOWLOntologyManager().getOWLDataFactory();

    Set<OWLLogicalAxiom> LogicalAxiom=rootOntology.getLogicalAxioms();
    Iterator<OWLLogicalAxiom> axiom=LogicalAxiom.iterator();


        for (OWLClass cls : rootOntology.getClassesInSignature()) {

            // Get the annotations on the class that use the label property
            for (OWLAnnotation annotation : cls
                    .getAnnotations(rootOntology, df.getRDFSLabel())) {
                if (annotation.getValue() instanceof OWLLiteral) {
                    OWLLiteral val = (OWLLiteral) annotation.getValue();
                    // look for portuguese labels
                    if (val.hasLang("en"))
                        System.out.println( val.getLiteral());
                }
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2011-08-13
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    相关资源
    最近更新 更多