我想创建一个关于场地信息的RDFS架构,其中包含例如:
地址信息和xxx
信息。
我找到了另一个关于它的模式:https://schema.org/Place。它包含有关地址信息的更多属性,但没有关于xxx
的信息。
所以
我应该将我的架构场地作为https://schema.org/Place的子类 并添加新属性?
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:place="https://schema.org/Place#"
xml:base="http://localhost:3000/VenueSchema#">
<rdfs:Class rdf:ID="Venue">
<rdfs:subClassOf rdf:resource="https://schema.org/Place"/>
</rdfs:Class>
<rdf:Property rdf:ID="xxx">
<rdfs:domain rdf:resource= "#Venue">
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
</rdf:Property>
</rdf:RDF>
如果我使用子类,会场是否自动拥有https://schema.org/Place的属性?
或者不是子类化,我应该重用https://schema.org/Place,但为https://schema.org/Place声明额外的属性?类似下面的代码:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:place="https://schema.org/Place#"
xml:base="http://localhost:3000/VenueSchema#">
<rdf:Property rdf:ID="xxx">
<rdfs:domain rdf:resource= "https://schema.org/Place">
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
</rdf:Property>
</rdf:RDF>
答案 0 :(得分:2)
我应该将我的架构场所作为https://schema.org/Place的子类并添加新属性吗?
如果您要声明描述一个类 Venue ,那么将其作为其他人声明的其他 Place 类的子类是有意义的,如果您需要实现与该词汇的互操作性的某种程度。这只是意味着你要做 Venue rdfs:subClassOf Place 。
如果我使用子类,会场是否自动拥有https://schema.org/Place的属性?
RDFS(和OWL)类与面向对象编程语言中的类并不完全相同。属性不属于“类”,类不会从其超类“继承”属性。
当你说属性P的域是D类时,这意味着当你有一个三元 x P y 时,你可以推断那个< strong> x rdf:输入D 。
因此,您可以使用 Venue 实例中包含地点的任何属性,并且您不会推断有关它们的任何其他信息(除了财产断言) 也就是说,如果您已经知道 v 是 Venue ,并使用其地点的 p 属性有了它,你可以推断出 v 是地方,但是你已经可以这样做,因为你断言 Venue 是放置即可。
或者不是子类化,我应该重用https://schema.org/Place但是为https://schema.org/Place声明额外的属性?类似下面的代码:
您也可以声明将放置作为域名的新属性。域公理的意思是,如果属性与某个人一起使用,那么您可以推断个人是地方。