微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 foaf 指定类属性

如何解决如何使用 foaf 指定类属性

我想创建一个本体来描述社交网络中用户间的交互,并且我想将其导入到 GraphDB 中。 我决定使用词汇 foaf 来利用其中已经定义的资源。 我正在创建本体的模式,我正在开发 User 类作为 foaf:Person 的类型,每个用户都有一个字符串 name所以我想使用 foaf:name 属性用户类中添加这个关系。

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

@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:string:

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

解决方法

我建议您学习 RDF Schema 以获取有关如何编写自己的基本词汇的说明。您不需要使用其中的任何一个,但对于想要使用或理解您的自定义词汇表的任何人来说,它肯定很有用。

现在让我们考虑问题域。您有具有姓名和职位的用户。您希望您的名称是纯字符串,而您的标题是 :EducationalQualification 的实例。让我们试着表达一下,不是使用而是扩展 FOAF。

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

:User a rdfs:Class ;
  rdfs:subClassOf foaf:Person .

这是对你的新类的一个很好的定义——有人可以由此推断出你数据集中的用户可以被视为 FOAF 人。

对于人名,我认为 rdf:langString(即语言标记的字符串)是人名更好的类,尤其是如果您使用 foaf:name,所以我将使用它(不过反正用法上没什么区别)

:name a rdf:Property ;
  rdfs:domain :User ;
  rdfs:range rdf:langString ;
  rdfs:subPropertyOf foaf:name .

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

标题相同:

:title a rdf:Property ;
  rdfs:domain :User ;
  rdfs:range :EducationalQualification ;
  rdfs:subPropertyOf foaf:title .

您的初衷是表示通过 foaf:title 附加到 :User 的任何内容都是 :EducationalQualification。这也可以表达,但你需要比 RDFS 更强大的东西,比如 OWL:

@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。如果您有专门的含义,最好使用专门的属性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?