首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用rdfs:subPropertyOf

正确使用rdfs:subPropertyOf
EN

Stack Overflow用户
提问于 2015-09-20 15:21:22
回答 2查看 3.4K关注 0票数 6

我想使用rdf和rdfs表示以下关系:

“评估技术”具有“评估特性”(AC)的性质。在数据库中,这将由两个表表示,一个用于AT,另一个用于与AC中的外键链接,指向AT中的主键。

因此,到目前为止,我使用rdf和rdfs得到的是表示这两个表的以下类:

代码语言:javascript
复制
ex:AssessmentTechnique rdfs:label "Assessment Technique" .
ex:AssessmentCharacteristic rdfs:label "Assessment Characteristic" .

我的问题是关于AC表中的具体特征。这些是否可以--或者它们--正确地称为hasAssessmentCharacteristics的子属性?或者每个特定的特征都应该是它自己的属性?我尝试将它们创建为子属性,但是hasAssessmentCharacteristics的范围是一个类,子属性的范围通常是xsd:string或xsd:int类型,这违反了子属性具有相同域和范围以及父属性的规则。因此,以下内容是不正确的,尽管它表达了意图。

代码语言:javascript
复制
ex:hasAssessmentCharacteristics
  rdf:type rdfs:Property;
  rdfs:label "has Assessment Characteristics";
  rdfs:domain ex:AssessmentTechnique;
  rdfs:range ex:AssessmentCharacteristics .

ex:hasNumberOfItems
  rdfs:subPropertyOf ex:hasAssessmentCharacteristics;
  rdfs:label "has Number of Items";
  rdfs:domain ex:AssessmentTechnique;
  rdfs:range xsd:int .

我能想到这样做的唯一方法是忽略AC表中的每一列都来自同一个表,而是有一系列属性赋值语句,如下所示:

代码语言:javascript
复制
ex:hasNumberOfItems
  rdf:type rdfs:Property;
  rdfs:domain ex:AssessmentTechnique;
  rdfs:range xsd:int .    

ex:hasPublicAvailability
  rdf:type rdfs:Property;
  rdfs:domain ex:AssessmentTechnique;
  rdfs:range xsd:string .

ex:hasURL
  rdf:type rdfs:Property;
  rdfs:domain ex:AssessmentTechnique;
  rdfs:range xsd:string .

and so on....

我已经看到了在rdfs中使用容器的一些方法,但从我对参比物质的阅读来看,这似乎涉及到母鸡的房子和其中所包含的母鸡,而不是包含或收集母鸡不同类型的特征的一种方法(将隐喻的使用范围扩展到以下内容)

  • 解剖学
  • 饮食
  • 行为
  • 等等..。

因此,如果我要创建一长串的属性,而没有任何“标记”,以保持它们的组织,我将做一些评论。但是,如果有一种方法来组织这些使用rdf,rdfs或猫头鹰,那么我会感谢有人指点我的方式。

保罗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-21 13:47:11

我的问题是关于AC表中的具体特征。这些是否可以--或者它们--正确地称为hasAssessmentCharacteristics的子属性?或者每个特定的特征都应该是它自己的属性?

甚至不知道域模型的细节,答案在于子属性的实际意义。在以下情况下,属性p是属性q的子属性:

(x,y)隐含q(x,y)

这就是在RDFS推理中如何使用子属性断言。如果一个属性是另一个属性的子属性,那么每当您看到第一个属性的用法时,就可以推断另一个属性。例如,hasDaughter是hasChild的一个子属性,因为我们知道,如果某人有x作为女儿,那么他们就有x作为子属性。

听起来,您需要一个toplevel属性(名称简化) hasCharacteristic,并定义一些指定单个特征的子属性。这没什么问题。例如,在描述一个人时,我们可以:

代码语言:javascript
复制
:hasCharacteristic a rdfs:Property .

:hasHeightInInches rdfs:subPropertyOf :hasCharacteristics ;
                   rdfs:range xsd:int .

:hasName           rdfs:subPropertyOf :hasCharacteristic ;
                   rdfs:range xsd:string .

但是,对于域和范围,您是正确的;如果子属性的域或范围不兼容,那么您需要确保在超级属性上有一个足够公共的超类,或者根本不声明它们。在上面的示例中,您可以请求所有的值:hasCharacteristic,您将得到它们的名称和身高(以英寸为单位),并且得到数字和字符串这一事实不会有问题。

关于域和范围,请记住,具有域D的属性p仅意味着:

(x,y)隐含D(x)

拥有R范围意味着:

(x,y)隐含R(y)

其后果之一是域和范围由子属性“继承”。设p是q的一个子性质,Q是D域,然后从p(x,y)出发,我们可以推论q(x,y) (因为p是q的子性质),然后我们可以推论D(x) (因为D是q的一个域)。这意味着在上面的示例中,您可以在超级属性上声明一个公共域:

代码语言:javascript
复制
:hasCharacteristic a rdfs:Property ;
                   rdfs:domain :Person .

:hasHeightInInches rdfs:subPropertyOf :hasCharacteristics ;
                   rdfs:range xsd:int .

:hasName           rdfs:subPropertyOf :hasCharacteristic ;
                   rdfs:range xsd:string .

现在,每当你看到,例如,

(x,y)

您可以推断出以下附加信息:

(x,y)

(B)xsd(Y)

票数 7
EN

Stack Overflow用户

发布于 2015-09-20 20:20:49

我尝试将它们创建为子属性,但是hasAssessmentCharacteristics的范围是一个类,子属性的范围通常是xsd:string或xsd:int类型,这违反了子属性具有相同域和范围以及父属性的规则。

那么,为什么不将hasAssesmentCharacteristics的范围定义为类呢?

代码语言:javascript
复制
  ex:hasAssessmentCharacteristics
    rdf:type rdfs:Property;
    rdfs:label "has Assessment Characteristics" .

  ex:hasNumberOfItems
    rdfs:subPropertyOf ex:hasAssessmentCharacteristics;
    rdfs:label "has Number of Items";
    rdfs:domain ex:AssessmentTechnique;
    rdfs:range xsd:int .

上面的内容非常好(并且是一致的)。

我能想到这样做的唯一方法是忽略AC表中的每一列都来自同一个表,而是有一系列属性赋值语句,如下所示:

在RDF模型中,您所要解决的问题实际上是非常基本的:与许多其他建模范式不同,属性是一流的公民。属性本身就是“事物”,而不仅仅是类的属性(没有类就不能存在)或表的列(没有表就不能存在)。因此,在某种程度上,人们期望属性的定义与类没有那么紧密的联系。

尽管如此,使用rdfs:subPropertyOf关系将多个属性捆绑在一起的想法是绝对正确的。诀窍是在很高的层次上对域和范围的定义保持沉默。

顺便说一句,如果您从RDFS转到一种更有表现力的语言(如OWL ),那么您可以更好地控制这类事情。OWL允许您指定特定于类的域和范围的限制(尽管仍然不能完全“覆盖”域和父属性的范围)。迁移到OWL是否值得(缺点之一是必须处理更复杂的语言和数据模型)取决于您实际打算使用该模型的目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32680982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档