在RDFS中为现有类定义额外属性?

时间:2015-05-19 13:07:14

标签: semantic-web ontology schema.org rdfs

我想创建一个关于场地信息的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>

1 个答案:

答案 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声明额外的属性?类似下面的代码:

您也可以声明将放置作为域名的新属性。域公理的意思是,如果属性与某个人一起使用,那么您可以推断个人是地方