gpt4 book ai didi

java - 通过特定语言的标签检索 DBpedia 本体类?

转载 作者:行者123 更新时间:2023-12-02 05:42:39 24 4
gpt4 key购买 nike

我有从 http://wiki.dbpedia.org/Downloads39 下载的 DBPedia Ontology 。在这个本体中,我有,例如,这样的情况:

<owl:Class rdf:about="http://dbpedia.org/ontology/BasketballLeague">
<rdfs:label xml:lang="el">Ομοσπονδία Καλαθοσφαίρισης</rdfs:label><rdfs:label xml:lang="fr">ligue de basketball</rdfs:label><rdfs:label xml:lang="en">basketball league</rdfs:label><rdfs:label xml:lang="it">lega di pallacanestro</rdfs:label><rdfs:label xml:lang="ja">バスケットボールリーグ</rdfs:label><rdfs:comment xml:lang="en">a group of sports teams that compete against each other in Basketball</rdfs:comment><rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/SportsLeague"/>
</owl:Class>

现在,我想使用 Jena 读取此本体并检索以法语语言““ligue de篮球”作为其对象的 owl 类。我不知道如何使用 Jena 库在中设置法语本案。

从 DBPedia Ontology 来看, xml:lang="fr"似乎是一个谓词,但我尝试过这段代码:

String inputFileName = "C:\\dbpedia_3.9.owl";
// Create an empty in-memory ontology model
OntDocumentManager mgr = new OntDocumentManager();
OntModelSpec s = new OntModelSpec( OntModelSpec.RDFS_MEM );
s.setDocumentManager( mgr );
OntModel m = ModelFactory.createOntologyModel( s, null );
// use the FileManager to open the ontology from the filesystem
InputStream in = FileManager.get().open(inputFileName);
if (in == null) {
throw new IllegalArgumentException( "File: " + inputFileName + " not found");
}
// read the ontology file
m.read( in, "" );

StmtIterator stmti = m.listStatements();
while (stmti.hasNext()){
Statement statement = stmti.nextStatement();
System.out.println (statement.getPredicate());
}

但我只得到:

http://www.w3.org/2000/01/rdf-schema#label

我没有获得谓词中有关语言的信息。为什么?我如何检索这些信息和 owl 类?我在这里做错了什么?

最佳答案

您需要阅读 RDF 中的文字以及它们在 RDF/XML 中的编码方式。您显示的本体片段采用 RDF/XML 格式(其设计目的不是人类可读的),并且 xml:lang 不是属性。 xml:lang 属性用于指定具有语言标记的文字的语言。

2.7 Languages: xml:lang

RDF/XML permits the use of the xml:lang attribute as defined by 2.12 Language Identification of XML 1.0 [XML] to allow the identification of content language. The xml:lang attribute can be used on any node element or property element to indicate that the included content is in the given language. Typed literals which includes XML literals are not affected by this attribute. The most specific in-scope language present (if any) is applied to property element string literal content or property attribute values. The xml:lang="" form indicates the absence of a language identifier.

Some examples of marking content languages for RDF properties are shown in Example 8:

Example 8: Complete example of xml:lang (example08.rdf output example08.nt)

<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
<dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
<dc:title xml:lang="en">RDF/XML Syntax Specification (Revised)</dc:title>
<dc:title xml:lang="en-US">RDF/XML Syntax Specification (Revised)</dc:title>
</rdf:Description>

<rdf:Description rdf:about="http://example.org/buecher/baum" xml:lang="de">
<dc:title>Der Baum</dc:title>
<dc:description>Das Buch ist außergewöhnlich</dc:description>
<dc:title xml:lang="en">The Tree</dc:title>
</rdf:Description>
</rdf:RDF>

如果您查看上面链接的 example08.nt,您将看到三元组包括:

<http://www.w3.org/TR/rdf-syntax-grammar> <http://purl.org/dc/elements/1.1/title> "RDF/XML Syntax Specification (Revised)" .
<http://www.w3.org/TR/rdf-syntax-grammar> <http://purl.org/dc/elements/1.1/title> "RDF/XML Syntax Specification (Revised)"@en .
<http://www.w3.org/TR/rdf-syntax-grammar> <http://purl.org/dc/elements/1.1/title> "RDF/XML Syntax Specification (Revised)"@en-us .

<http://example.org/buecher/baum> <http://purl.org/dc/elements/1.1/title> "Der Baum"@de .
<http://example.org/buecher/baum> <http://purl.org/dc/elements/1.1/title> "The Tree"@en .

资源的 dc:title 属性有多个值。 xml:lang 不是属性,而是用于指定文字的一部分。

DBpedia 数据中也有同样的情况。属性 rdfs:label 有多个值,RDF/XML 序列化中的 xml:lang 属性用于指示它们的语言。目前我无法使用 DBpedia,但是如果您访问 http://dbpedia.org/ontology/BasketballLeague并滚动到页面底部,您将能够下载各种格式的数据。如果您以 TTL/N3 格式下载它,您将看到如下内容:

dbpedia-owl:BasketballLeague rdfs:label "basketball league"@en ,
"Ομοσπονδία Καλαθοσφαίρισης""@el ,
"ligue de basketball"@fr,
...

需要用getObject获取谓词的对象,无论是literal使用 isLiteral,并且当使用 getLanguage 来获取语言标签(如果有)时。相关类的 Javadoc 描述了您需要的所有方法。我已经在本段前面链接到了文字类。

关于java - 通过特定语言的标签检索 DBpedia 本体类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24383062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com