首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用foaf指定类属性

如何使用foaf指定类属性
EN

Stack Overflow用户
提问于 2021-02-11 20:47:13
回答 1查看 328关注 0票数 0

我想要创建一个本体,它描述了社交网络中用户之间的交互,并且我想在GraphDB中导入它。我决定使用词汇表福夫来利用其中已经定义的资源。我正在创建本体的模式,并将用户类开发为foaf:Person类型,每个用户都有一个字符串名称,因此我希望使用foaf:name属性在用户类中添加这个关系。

我的问题是,由于这不是一个用户的实例,我应该在谓词foaf:name旁边的类描述中使用什么对象?

代码语言:javascript
运行
复制
@prefix : <http://xmlns.com/swp/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/TR/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# BASE INFORMATION

:User a foaf:Person ;
    rdfs:label "User" ;
    rdfs:comment "A person who has got an account" ;
    foaf:name ??? ;
    foaf:title :EducationalQualification .

编辑我认为正确的对象可能是xsd:

代码语言:javascript
运行
复制
:User a foaf:Person ;
    rdfs:label "User" ;
    rdfs:comment "A person who has got an account" ;
    foaf:name xsd:string ;
    foaf:title :EducationalQualification .
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-12 14:35:51

我建议学习RDF模式,了解如何编写自己的基本词汇表。您不需要使用这些词汇,但是对于想要使用或理解您的自定义词汇表的人来说,这当然是有用的。

现在让我们考虑一下问题域。您有具有名称和标题的用户。您希望您的名称是普通字符串,而您的标题则是:EducationalQualification的实例。让我们尝试表达这一点,不是使用而是扩展FOAF。

首先,您希望表示每个:User都是一个foaf:Person。编写:User a foaf:Person是不正确的,因为它意味着由:User标识的资源是一个人的特定实例,而它不是--它是一个类!

代码语言:javascript
运行
复制
:User a rdfs:Class ;
  rdfs:subClassOf foaf:Person .

这是对新类的一个很好的定义--从这个定义可以推断,您的数据集中的用户可以被视为FOAF人员。

对于人名,我认为rdf:langString (即带有语言标记的字符串)是一个更好的人名类,特别是当您使用foaf:name时,所以我将使用它(但用法上没有区别)。

代码语言:javascript
运行
复制
:name a rdf:Property ;
  rdfs:domain :User ;
  rdfs:range rdf:langString ;
  rdfs:subPropertyOf foaf:name .

这同样非常简单::name是一个属性,它可以(必须)附加到:User,并且(必须)具有rdf:langString的值。如果任何两个资源都是通过该属性链接的,这意味着它们也与foaf:name链接(由于子属性)。

标题相同:

代码语言:javascript
运行
复制
:title a rdf:Property ;
  rdfs:domain :User ;
  rdfs:range :EducationalQualification ;
  rdfs:subPropertyOf foaf:title .

您最初的意图是表示通过foaf:title连接到:User的任何东西都是:EducationalQualification。这也可以表示出来,但是您需要比RDFS更强大的东西,比如OWL:

代码语言:javascript
运行
复制
@prefix owl: <http://www.w3.org/2002/07/owl#> .

[ a owl:Restriction ;
  owl:onProperty [ owl:inverseOf foaf:title ] ;
  owl:someValuesFrom :User
] rdfs:subClassOf :EducationalQualification .

不过,我不认为这是一个好主意,因为它以一种意想不到的方式修改了foaf:title。如果你心中有一个特殊的含义,最好使用一个专门的属性。

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

https://stackoverflow.com/questions/66162579

复制
相关文章

相似问题

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