Вставка определенных пользователем свойств объекта - PullRequest
0 голосов
/ 02 января 2019

Для школьного проекта мы должны использовать 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.

Код, определяющий онтологию Skill:

<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 я попытался использовать класс 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();

Пространство имен (нс) равно "http://localhost:8080/ontologies/" Но это дает мне ошибку, что в схеме отсутствует обязательный компонент.

...