저는 Jena freamwork를 사용하여 몇 가지 규칙을 만들어야하는 프로젝트를 진행하고 있습니다.규칙의 결과를 모델 (예나)에 쓰는 방법은 무엇입니까?
나는 규칙을 만들었고 규칙을 따라야한다. 출력을 화면에서 볼 수는 있지만 내가하고 싶은 것은 온톨로지의 모델에 결과를 저장하는 것입니다. 내가 이전에 생성 한 내장 - 사용자 정의를 사용하고이 예에서는
@prefix ex: <http://www.semanticweb.org/prova_rules_M#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@include <OWL>
[pippo:
(?p http://www.semanticweb.org/prova_rules_M#anni_persona ?x)
<-
(?p rdf:type ex:Persona)
(?p http://www.semanticweb.org/prova_rules_M/persona#data_nascita ?c)
myDiffDateYear(?c,"2014-06-18T00:00:00.0"^^xsd:dateTime,?x)
]
:
나는이 코드를 가지고있다. 두 날짜 사이의 차이 날짜를 반환합니다. 나는 다음과 같은 코드 내 화면 덕분에 출력을 볼 수
String percorsoFile ="./prova_rules_M_rdf.owl";
String ruleFile= "./prova_rules_M_rdf_7_diffDate.txt";
Model rawModel = ModelFactory.createDefaultModel();
//create a resource (empty model)
Resource configuration = rawModel.createResource();
// set engine mode
configuration.addProperty(ReasonerVocabulary.PROPruleMode, "hybrid");
// set the rules file
configuration.addProperty(ReasonerVocabulary.PROPruleSet, ruleFile);
List<Rule> rules = Rule.rulesFromURL(ruleFile);
GenericRuleReasoner reasonerRULE = (GenericRuleReasoner) GenericRuleReasonerFactory.theInstance().create(configuration);
reasonerRULE.setRules(rules);
Model modelRULE= FileManager.get().loadModel(percorsoFile);
//create the inference model
InfModel infModelRULE = ModelFactory.createInfModel(reasonerRULE, modelRULE);
//force starting the rule execution
infModelRULE.prepare();
//write down the result in RDFXML form
infModelRULE.write(System.out);
가 어떻게 내 모델 내부의 데이터 속성 "anni_persona"의 결과를 쓰기 (및뿐만 아니라 출력으로) 할 수 있습니까?
감사합니다.
작성한대로 노력했습니다. 작동하지만 내 규칙의 결과는 "annotation"으로 기록되며 "data_property"로 기록되지 않습니다. "data_property"로 가져오고 싶습니다. 이유를 알고 계십니까? – user3563844
결과 모델의'# anni_persona' 속성을 설명하는 트리플이 있습니까? 'owl : ObjectProperty' 또는'owl : DatatypeProperty'로 명시 적으로 표시되어 있지 않으면 Protege와 같은 도구는 대신 주석 유형 속성이라고 가정하는 경향이 있습니다. –
작성된 부동산의 해석에 대한 추가 지원이 필요한 경우 최소한의 예 (입력 데이터, 출력 데이터, 규칙, 사용중인 모든 스키마 등)를 작성하여 새 질문으로 게시 할 수 있습니다. 다른 사람들도 도움을 줄 수 있음). 이 질문과는 별개의 문제인 것처럼 보입니다. –