插入自定义对象属性

时间:2019-01-02 14:17:02

标签: java rdf jena owl foaf

对于学校项目,我们必须使用RDF和OWL创建职位空缺/申请人服务。我们正在使用Spring和Apache Jena编写此服务。该服务将包含具有某些技能的人员,以及需要某些技能的公司的职位空缺。我们已经创建了本体,但是我们找不到如何创建技能并将其链接到人的方法。

首先,我们尝试使用以下代码直接将hasSkill对象的属性设为foaf:person:

<owl:ObjectProperty rdf:about="foaf#hasSkill">
    <owl:domain owl:class="foaf#person" />
<owl:range owl:class="#Skill" />
</owl:ObjectProperty>

我们尝试使用SparQL插入这些技能,但是找不到如何将创建的技能与现有用户联系起来的方法。我们尝试的另一种方法是通过代码访问属性。

Resource user = userRepository.getUserResource(userID);
Property skill = model.createProperty("Skill");

第一行通过使用SparQL查询来获取用户的资源。

定义技能本体的代码:

<owl:Class owl:name="Skill">
<owl:Annotation>
    <owl:Label>Skill</owl:Label>
</owl:Annotation>
</owl:Class>

<owl:ObjectProperty rdf:about="http://localhost:8080/ontologies/Skill#SkillName">
  <owl:domain owl:class="Skill" />
  <owl:range owl:class="rdfs#literal"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:about="http://localhost:8080/ontologies/Skill#CompetencyLevel">
  <owl:domain owl:class="Skill" />
  <owl:range owl:class="rdfs#literal" />
</owl:ObjectProperty>

定义申请人本体的代码:

<owl:Class owl:name="Applicant">
    <owl:Annotation>
      <owl:Label>Applicant</owl:Label>
</owl:Annotation>
</owl:Class>

<owl:ObjectProperty rdf:about="http://localhost:8080/ontologies/Applicant#Person">
    <owl:domain owl:class="Applicant" />
  <owl:range owl:class="foaf#person" />
</owl:ObjectProperty>

<owl:ObjectProperty rdf:about="http://localhost:8080/ontologies/Degree#StudyField">
    <owl:domain owl:class="Applicant" />
    <owl:range owl:class="#Skill" />
</owl:ObjectProperty>

我们要做的是现有用户可以向其个人资料添加技能。然后,可以使用这些技能来匹配职位空缺。

在AKSW建议之后,我尝试使用Jena的Resource类:

Property name = ResourceFactory.createProperty("", ns + "Skill#SkillName");
Property competencyLvl = ResourceFactory.createProperty("", ns + "Skill#CompetencyLevel");
Resource r = model.getModel().createResource("Skill")
            .addProperty(name, skillDetail.getSkillName())
            .addProperty(competencyLvl, skillDetail.getCompetencyLevel());

model.writeChanges();

名称空间(ns)等于“ http://localhost:8080/ontologies/” 但这给了我一个错误,该方案缺少必需的组件。

0 个答案:

没有答案