Для школьного проекта мы должны использовать 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/" Но это дает мне ошибку, что в схеме отсутствует обязательный компонент.