Jena API 区分 class 和 class 的实例
Jena API differenciate between class and instance of a class
当使用 Jena API 列出符合资源的所有语句时,我找不到区分主体或客体是 class 还是 [=29 的实例的方法=]本身。
<http://jlanza.net/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.oclc.org/NET/ssnx/ssn#Device>
<http://jlanza.net/node1> <http://purl.oclc.org/NET/ssnx/ssn#onPlatform> <<http://jlanza.net/node2>
node1
和node2
是我所说的实例或个体,而http://purl.oclc.org/NET/ssnx/ssn#Device
是它实例化的class。
你知道区分它的方法吗?通过使用 isUriResource()
、isResource()
等,我得到了相同的结果。我们还要说,获得 rdf:type
属性 不仅有效,因为可能还有其他属性 link 到 class.
非常欢迎任何帮助。
总的来说,差别不大
RDF 本身并没有做出这种区分。 Rdf:type 只是另一个 IRI,通常用作 属性。当然,在实践中,我们给 rdf:type 赋予了一些特殊的含义,从而表示 class 成员资格。也就是说,当我们有一个形式为
的三元组时
x rdf:type y
我们说(个体)x 是(class)y 的一个实例。但是在 RDF(S) 推理中,这也让我们推断出
y rdf:type rdfs:Class
表示(个体,也是class)y是(class)的实例rdfs:Class。所以个人和 classes 之间没有真正明确的区别。事实上,对于一个属性 p,我们也有那个
p rdf:type rdfs:Property
所以(属性)p 也是个人!在纯 RDF 中,确定个体“类型”的唯一方法是查找其 rdf:type 值。确定某物是否为 class 的唯一方法是寻找:
- 它被用作 class,即作为 x rdf:type C 形式的三元组中的对象;或
- 被声明为 class 和像 C rdf:type rdfs:Class 这样的三元组(或者,如果你使用 OWL, C rdf:type owl:Class).
在耶拿,OntResource 可以检查 isClass 和 isIndividual
但是,在耶拿,如果您使用 OntModel 并将资源作为 OntResouce, you can use the methods isClass() and isIndividual() 的实例来检查资源是否可以被视为 class 或个人。请注意,这些方法描述包括(强调):
Answer true if this resource can be viewed as a class
Answer true if this resource can be viewed as an individual
“可以查看”这句话很重要,因为正如我上面所描述的,资源可以同时是 classes、个人和属性。资源可能被视为不止一件事。但这些方法可能适用于大多数用例。
当使用 Jena API 列出符合资源的所有语句时,我找不到区分主体或客体是 class 还是 [=29 的实例的方法=]本身。
<http://jlanza.net/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.oclc.org/NET/ssnx/ssn#Device>
<http://jlanza.net/node1> <http://purl.oclc.org/NET/ssnx/ssn#onPlatform> <<http://jlanza.net/node2>
node1
和node2
是我所说的实例或个体,而http://purl.oclc.org/NET/ssnx/ssn#Device
是它实例化的class。
你知道区分它的方法吗?通过使用 isUriResource()
、isResource()
等,我得到了相同的结果。我们还要说,获得 rdf:type
属性 不仅有效,因为可能还有其他属性 link 到 class.
非常欢迎任何帮助。
总的来说,差别不大
RDF 本身并没有做出这种区分。 Rdf:type 只是另一个 IRI,通常用作 属性。当然,在实践中,我们给 rdf:type 赋予了一些特殊的含义,从而表示 class 成员资格。也就是说,当我们有一个形式为
的三元组时x rdf:type y
我们说(个体)x 是(class)y 的一个实例。但是在 RDF(S) 推理中,这也让我们推断出
y rdf:type rdfs:Class
表示(个体,也是class)y是(class)的实例rdfs:Class。所以个人和 classes 之间没有真正明确的区别。事实上,对于一个属性 p,我们也有那个
p rdf:type rdfs:Property
所以(属性)p 也是个人!在纯 RDF 中,确定个体“类型”的唯一方法是查找其 rdf:type 值。确定某物是否为 class 的唯一方法是寻找:
- 它被用作 class,即作为 x rdf:type C 形式的三元组中的对象;或
- 被声明为 class 和像 C rdf:type rdfs:Class 这样的三元组(或者,如果你使用 OWL, C rdf:type owl:Class).
在耶拿,OntResource 可以检查 isClass 和 isIndividual
但是,在耶拿,如果您使用 OntModel 并将资源作为 OntResouce, you can use the methods isClass() and isIndividual() 的实例来检查资源是否可以被视为 class 或个人。请注意,这些方法描述包括(强调):
Answer true if this resource can be viewed as a class
Answer true if this resource can be viewed as an individual
“可以查看”这句话很重要,因为正如我上面所描述的,资源可以同时是 classes、个人和属性。资源可能被视为不止一件事。但这些方法可能适用于大多数用例。