Skip to content

Commit

Permalink
* タイプ付きリテラルが含まれている場合に,mr3ファイルの復元ができなかったのを修正
Browse files Browse the repository at this point in the history
* プロパティに日本語が含まれている場合に,UTF-8エンコード時に例外が発生していたのを修正
* 名前空間テーブルに登録されていない名前空間を持つリソースについて,UTF-8エンコードにチェックがなくてもエンコードされていたのを修正
* UTF-8エンコードされたファイルをインポート時に,デコードするように修正
  • Loading branch information
Takeshi Morita committed Apr 14, 2016
1 parent 8c310a4 commit fb1f3da
Show file tree
Hide file tree
Showing 10 changed files with 175 additions and 106 deletions.
2 changes: 1 addition & 1 deletion README.ja.md
Expand Up @@ -2,7 +2,7 @@ MR<sup>3</sup>
===

## Webサイト
* <http://mr3.sourceforge.net/>
* <http://mrcube.org/>

## 概要
MR<sup>3</sup> (Meta-Model Management based on RDFs Revision Reflection) は,次世代Webの候補の1つであるセマンティックWebにおけるRDF (Resource Description Framework)及びRDFS (RDF Schema)の視覚的な編集とそれらの間の関係を管理する機能を持つエディタです.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -2,7 +2,7 @@ MR<sup>3</sup>
==========

## Web Site
* <http://mr3.sourceforge.net/>
* <http://mrcube.org/>

## What is MR<sup>3</sup> ?
MR<sup>3</sup> (Meta-Model Management based on RDFs Revision Reflection) is an editing tool of RDF-based contents developed for managing a relationship between RDF and RDFS contents.
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -5,7 +5,7 @@
<groupId>net.sourcefoge</groupId>
<artifactId>mr3</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<version>1.0.1</version>

<name>MR^3</name>
<url>http://mr3.sourceforge.net</url>
Expand Down
1 change: 1 addition & 0 deletions src/main/assembly/descriptor-bin.xml
Expand Up @@ -24,6 +24,7 @@
<directory>src/main/resources</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.bat</include>
<include>*.xml</include>
<include>*.jar</include>
<include>License.txt</include>
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/net/sourceforge/mr3/resources/version_info.html
Expand Up @@ -11,7 +11,7 @@
<dt>
<b>Version:</b>
</dt>
<dd>1.0</dd>
<dd>1.0.1</dd>
<dt>
<b>License:</b>
</dt>
Expand All @@ -20,34 +20,35 @@
<b>Project Website:</b>
</dt>
<dd>
<a href="http://mr3.sourceforge.net/">http://mr3.sourceforge.net/</a>
<a href="http://mrcube.org/">http://mrcube.org/</a>
</dd>
<dt>
<b>Contact:</b>
</dt>
<dd>Takeshi Morita (t_morita@ae.keio.ac.jp)</dd>
</dl>
<p>Copyright (C) 2003-2015 Yamaguchi Laboratory, Keio University.</P>
<p>Copyright (C) 2003-2016 Yamaguchi Laboratory, Keio University.</P>
<br>
<hr>
<font size="5"><b>Acknowledgements</b></font>
<br> MR
<sup>3</sup>uses the following libraries.

<ul>
<li><a href="http://www.jgraph.com/">JGraph</a></li>
<li><a href="http://jena.sourceforge.net/">Jena 2 Semantic
Web Toolkit</a></li>
<li><a href="http://www.infonode.net/index.html?idw">InfoNode
Docking Windows</a>
Docking Windows</a></li>
<li><a href="http://www.jgraph.com/">JGraphAddons</a></li>
<li><a
href="http://www.eng.auburn.edu/department/cse/research/graph_drawing/graph_drawing.html">Drawing
Graphs with VGJ</a></li>
<li><a href="http://jfontchooser.sourceforge.jp/">JFontChooser</a></li>
<li><a href="http://attic.apache.org/projects/jakarta-oro.html">Jakarta
ORO</a></li>
<li><a href="http://www.famfamfam.com">Silk Icons</a>
<li><a href="http://exewrap.sourceforge.jp/">exewrap</a>
<li><a href="http://www.famfamfam.com/">Silk Icons</a></li>
<li><a href="http://exewrap.sourceforge.jp/">exewrap</a></li>
</ul>
</body>
</html>
79 changes: 51 additions & 28 deletions src/main/java/net/sourceforge/mr3/ui/ExportDialog.java
Expand Up @@ -36,10 +36,11 @@
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

Expand Down Expand Up @@ -80,6 +81,8 @@
import org.jgraph.graph.GraphCell;
import org.jgraph.graph.GraphConstants;

import com.hp.hpl.jena.datatypes.RDFDatatype;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
Expand All @@ -88,7 +91,7 @@
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.shared.InvalidPropertyURIException;
import com.hp.hpl.jena.util.URIref;
import com.hp.hpl.jena.vocabulary.RDFS;

Expand Down Expand Up @@ -232,8 +235,7 @@ public void actionPerformed(ActionEvent e) {

JPanel exportButtonPanel = new JPanel();
exportButtonPanel.setLayout(new GridLayout(2, 1, 5, 5));
exportButtonPanel
.setBorder(BorderFactory.createTitledBorder(Translator.getString("Component.File.Export.Text")));
exportButtonPanel.setBorder(BorderFactory.createTitledBorder(Translator.getString("Component.File.Export.Text")));
exportButtonPanel.add(exportFileButton);
exportButtonPanel.add(exportImgButton);

Expand Down Expand Up @@ -276,15 +278,20 @@ private File getFile() {

private File getFile(String extension) {
JFileChooser jfc = new JFileChooser(gmanager.getUserPrefs().get(PrefConstants.WorkDirectory, ""));
if (extension.equals("rdf")) {
switch (extension) {
case "rdf":
jfc.addChoosableFileFilter(rdfsFileFilter);
jfc.addChoosableFileFilter(owlFileFilter);
} else if (extension.equals("n3")) {
break;
case "n3":
jfc.setFileFilter(n3FileFilter);
} else if (extension.equals("ttl")) {
break;
case "ttl":
jfc.setFileFilter(turtleFileFilter);
} else if (extension.equals("png")) {
break;
case "png":
jfc.setFileFilter(pngFileFilter);
break;
}

if (jfc.showSaveDialog(gmanager.getDesktopTabbedPane()) == JFileChooser.APPROVE_OPTION) {
Expand Down Expand Up @@ -317,7 +324,7 @@ public void actionPerformed(ActionEvent e) {
try {
String encoding = gmanager.getUserPrefs().get(PrefConstants.OutputEncoding, "UTF8");
Writer writer = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(file)), encoding);
writeModel(getModel(), writer);
writer.write(getModelString(getModel()));
writer.close();
} catch (Exception ex) {
ex.printStackTrace();
Expand Down Expand Up @@ -355,11 +362,9 @@ public void actionPerformed(ActionEvent e) {
BufferedImage img = null;
if (rdfConvertBox.isSelected() && gmanager.getCurrentRDFGraph().getModel().getRootCount() > 0) {
img = GPConverter.toImage(gmanager.getCurrentRDFGraph());
} else if (classConvertBox.isSelected()
&& gmanager.getCurrentClassGraph().getModel().getRootCount() > 0) {
} else if (classConvertBox.isSelected() && gmanager.getCurrentClassGraph().getModel().getRootCount() > 0) {
img = GPConverter.toImage(gmanager.getCurrentClassGraph());
} else if (propertyConvertBox.isSelected()
&& gmanager.getCurrentPropertyGraph().getModel().getRootCount() > 0) {
} else if (propertyConvertBox.isSelected() && gmanager.getCurrentPropertyGraph().getModel().getRootCount() > 0) {
img = GPConverter.toImage(gmanager.getCurrentPropertyGraph());
}
if (img != null) {
Expand Down Expand Up @@ -392,12 +397,10 @@ private void setRDFTreeRoot() {
map.put(resType, instanceSet);
}
}
for (Iterator i = map.keySet().iterator(); i.hasNext();) {
Object typeRes = i.next();
for (Object typeRes : map.keySet()) {
Set instanceSet = map.get(typeRes);
DefaultMutableTreeNode typeNode = new DefaultMutableTreeNode(typeRes);
for (Iterator j = instanceSet.iterator(); j.hasNext();) {
Object instance = j.next();
for (Object instance : instanceSet) {
DefaultMutableTreeNode instanceNode = new DefaultMutableTreeNode(instance);
typeNode.add(instanceNode);
}
Expand Down Expand Up @@ -434,15 +437,21 @@ private void writeModel(Model model, Writer writer) {
rdfWriter.write(model, writer, gmanager.getBaseURI());
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(gmanager.getDesktopTabbedPane(), "Export Error", "",
JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(gmanager.getDesktopTabbedPane(), "Export Error", "", JOptionPane.ERROR_MESSAGE);
}
}

private void writeModelToPager(Model model) {
private String getModelString(Model model) {
Writer writer = new StringWriter();
writeModel(model, writer);
exportTextArea.setText(writer.toString());
if (!encodeCheckBox.isSelected()) {
try {
return URLDecoder.decode(writer.toString(), "UTF-8");
} catch (UnsupportedEncodingException uee) {
uee.printStackTrace();
}
}
return writer.toString();
}

private String getConvertType() {
Expand Down Expand Up @@ -520,18 +529,32 @@ private Model getModel() {

private Model getEncodedModel(Model model) {
Model encodedModel = ModelFactory.createDefaultModel();
// String encoding =
// gmanager.getUserPrefs().get(PrefConstants.OutputEncoding, "UTF8");
for (StmtIterator i = model.listStatements(); i.hasNext();) {
Statement stmt = (Statement) i.next();
for (Statement stmt : model.listStatements().toList()) {
Resource subject = stmt.getSubject();
if (!subject.isAnon()) {
subject = ResourceFactory.createResource(URIref.encode(stmt.getSubject().getURI()));
}
Property predicate = ResourceFactory.createProperty(URIref.encode(stmt.getPredicate().getURI()));
Property predicate = stmt.getPredicate();
try {
predicate = ResourceFactory.createProperty(URIref.encode(stmt.getPredicate().getURI()));
} catch (InvalidPropertyURIException ipue) {
ipue.printStackTrace();
}
RDFNode object = stmt.getObject();
if (object.isResource() && !object.isAnon()) {
object = ResourceFactory.createResource(URIref.encode(((Resource) object).getURI()));
} else if (object.isLiteral()) {
Literal literal = object.asLiteral();
RDFDatatype dType = literal.getDatatype();
String lang = literal.getLanguage();
String text = URIref.encode(literal.getString());
if (dType != null) {
object = ResourceFactory.createTypedLiteral(text, dType);
} else if (0 < lang.length()) {
object = ResourceFactory.createLangLiteral(text, lang);
} else {
object = ResourceFactory.createPlainLiteral(text);
}
}
encodedModel.add(subject, predicate, object);
}
Expand All @@ -548,7 +571,7 @@ private void setNsPrefix(Model model) {
}

public void actionPerformed(ActionEvent e) {
writeModelToPager(getModel());
exportTextArea.setText(getModelString(getModel()));
}

public void setFont(Font font) {
Expand All @@ -562,7 +585,7 @@ public static void setText(String text) {

public void setVisible(boolean t) {
if (t) {
writeModelToPager(getModel());
exportTextArea.setText(getModelString(getModel()));
if (GraphUtilities.defaultFont != null) {
setFont(GraphUtilities.defaultFont);
}
Expand Down

0 comments on commit fb1f3da

Please sign in to comment.